编程语言
首页 > 编程语言> > c# – Master Page正在TextBox ID中添加其他文本

c# – Master Page正在TextBox ID中添加其他文本

作者:互联网

我有一个母版页,其内容部分的id为cpMainContent.
我正在为大学项目创建的每个webform上使用这个母版页.其中一种形式是frmSearchPersonnel. frmSearchPersonnel的目的是询问用户他们想要在文本框中搜索的人的姓氏,然后单击搜索按钮. TextBox的ID是

        txtSearchName

搜索按钮会将postbackUrl传输到另一个名为frmViewPersonnel的表单.
在frmViewPersonnel中我试图使用以下代码.

        NameValueCollection myRequest = Request.Form;
        if(!string.IsEmptyOrNull(myRequest["txtSearchName"]))
           string strSearch = myRequest["txtSearchName"];

我遇到的问题是,没有找到任何名称为txtSearchName的控件.调试时我在myRequest对象中找到了这个,

                [5] "ctl00$cpMainContent$txtSearchName" string

即使我添加文本框时,我给它提供了txtSearchName的ID,但是当呈现页面时,它正在从母版页添加额外的字符串.

>我怎么能阻止这个?我必须使用母版页所以不要说不使用母版页:)
>为什么这样做?

更新

谷歌搜索和Binging我发现在这种情况下我可以使用Control.ClientID进行调查.

更新2

如下所示,在控件的html中添加ClientIDMode =“static”或在page指令中添加它.它的作用是,它将ID保持为txtSearchName,但问题是这样,

         <input name="ctl00$cpMainContent$txtSearchName" type="text" id="txtSearchName" />

这里的名字仍然使用ctl00和我上面显示的代码,

            string strSearch = myRequest["txtSearchName"] 

它仍然无法工作,因为nvc集合可以通过索引或名称直接搜索而不是id.

==============

解决方法:

如果您要发布到使用相同母版页的另一个页面(在我的情况下称为SiteMaster),则文本框的名称应该相同.

string val = Request[((SiteMaster)Master).txtSearchName.UniqueID];

如果您没有发布到具有相同主页的页面,那么,您是否正在使用视图状态进行文本框,因为您要发布到另一个页面?如果没有,只需使控件成为非asp.net控件:

<input type="text" name="txtSearchName"/>

如果您使用viewstate并发布到具有不同母版页的其他页面,那么您应该使用PreviousPage.

标签:c,asp-net,httpwebrequest,master-pages
来源: https://codeday.me/bug/20190716/1482152.html