asp.net 4.0:是否有相当于ClientIDMode的INPUT的名称?
|
我有一个asp:ListView其ClientIDMode设置为Predictable。它的ItemTemplate包含一个asp:文本框。 文本框的ID是按照我期望的方式执行的,但它的名称仍然使用一种类似于AutoID风格的算法: <input name="lvFields$ctrl0$tbVal" id="lvFields_tbVal_somekey" type="text"/> 有没有办法使我的输入名称像ID这样做? (回答下面的问题编辑:) 输入元素的名称是POST数据中的内容,因此如果回发更改ListView绑定到的列表(例如,交换两个元素),则文本框中的值最终会与错误的键相关联,因为框架根据Name而不是ID相关联。 解决方法您可以使用以下文章中的方法更改输入的名称,但稍稍修改:ASP.NET: how to remove ‘name’ attribute from server controls? 我在一个页面控件上覆盖了RenderChildren方法,因为我只想完全控制一些控件的HTML: protected override void RenderChildren(HtmlTextWriter writer)
{
var unScrewNamesRender = new RenderBasicNameHtmlTextWriter(writer);
base.RenderChildren(unScrewNamesRender);
}
private class RenderBasicNameHtmlTextWriter : HtmlTextWriter
{
public RenderBasicNameHtmlTextWriter(TextWriter writer) : base(writer) { }
public override void AddAttribute(HtmlTextWriterAttribute key,string value)
{
if (key == HtmlTextWriterAttribute.Name && value.Contains("POLine"))
{
value = value.Substring(value.LastIndexOf("$") + 1);
}
base.AddAttribute(key,value);
}
}
如果您尝试这样做,您需要知道自己在做什么,WebForms会认为控件丢失,因此您无法在任何回发中使用该控件。为了我的目的,我想要添加任意数量的多行服务器或客户端,而不必处理.Net Ajax控件,它的工作正常。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-3 – ASP.NET MVC 3在web.config中的区域和多个
- asp.net-mvc-3 – 应该如何看待“分离”?
- asp.net – 如何在单独的dll项目中配置WCF
- asp.net-mvc – 带有并发检查的ASP.NET MVC实体框架
- asp.net-web-api – 如何从Web API响应中删除标头?
- asp.net – 从MVC视图中的模型访问displayName属性
- asp.net-mvc – 在哪里?Json.Encode或@Json.Decode方法在M
- asp.net – 在web.config文件中设置重定向
- ASP.NET应用程序中需要定时炸弹
- asp.net – 如何使用EF仅更新单个字段
