我们有一个 win 应用程序,它在 Web 浏览器中显示 Web 表单。为了从这个 Web 表单中获取数据,我们使用了一个隐藏的文本框,并使用 Web 浏览器控件的 HtmlDocument 对象获取其文本。我想对具有此文本框元素的此 Web 表单进行抽象,以便其他表单可以使用此抽象。我制作了一个 Web 控件并将文本框放在上面。我想如果我把这个控件放在我的页面上,它就会有文本框。当我运行我的应用程序时,我注意到文本框已经呈现但有它的控件名称在它的名称 (WebControl$TextBoxName) 和它的 id(WebControl_TextBoxName) 中,win 应用程序抛出异常,因为它无法通过它的 id(TextBoxName) 找到元素。所以这是我的问题:如何制作一个包含一些元素的抽象 Web 表单/Web 控件,并且我可以使用它来使我的最终表单上包含这些元素?(他们的名字和身份证不应该改变)谢谢你的帮助
问问题
287 次
2 回答
1
dotNet 4.0 支持静态 ID,因此它们不会被破坏,请阅读客户端 ID 模式
或者,您可以覆盖控件的呈现以输出具有所需任何 ID 的标准 html 隐藏表单字段,然后还添加一个自定义属性,该属性将返回文本框,该文本框将隐藏它不是 asp.net 的事实服务器控制。
于 2010-02-19T19:25:39.220 回答
1
虽然我从未在 WinForms 中使用过浏览器控件,但我认为您想要使用的是母版页。假设您在浏览器控件中呈现的是一个 ASPX 页面,请创建一个母版页,其中包含您要从中获取数据的隐藏文本框,并告诉您希望拥有该通用控件的所有页面使用您的母版页。当页面呈现时,控件 ID 将为“ctl00_TextBoxName”。没有办法绕过 ID 连接,因为需要唯一的 ID,这是使用 ASP.NET 的所有嵌套控制功能保证唯一性的唯一方法。但是,这样做将保证您在创建的每个继承母版页的新表单上始终拥有相同名称的控件。希望有帮助!
总而言之(因为谁阅读段落?):
- 创建母版页
- 将您的公共控件放在母版页中
- 让您的表单继承母版页
您可以在MSDN 的文档中阅读母版页的工作原理。
于 2010-02-19T18:57:49.880 回答