ASP.NET MVC 3:用TextBoxFor覆盖“name”属性
使用Html.TextBoxFor
来覆盖name属性是否可能?
我尝试过没有成功。 我需要使用TextBoxFor获取客户端validation工作,但是由于我不会去的原因,我需要的文本框的名称不同于生成的。
我已经尝试了以下内容:
@Html.TextBoxFor(x => x.Data, new { name = Model.Key + "_Data", id = Model.Key + "_Data" })
哪个适用于ID而不是名称。 这可能吗?
更新 :查看TextBoxFor的代码。 这看起来不是一个简单的方法。 希望有人能certificate我错了。
你问这个是因为你想在名字上加一个前缀吗? 如果是这样,你可以通过在控制器中设置ViewData.TemplateInfo.HtmlFieldPrefix
来实现。
我从Brad Wilson的博客里学到了很多东西。
罗布,其实有一个更简单的方法。 使用名称而不是名称 :
@Html.TextBoxFor(x => x.Data, new { Name = Model.Key + "_Data", id = Model.Key + "_Data" })
EditorFor有一个重载,你可以提供name
属性作为参数:
@Html.EditorFor(expression, null, name)
试试EditorFor 。 如果要确保文本框即使属性types不是string,也可以传递string作为模板名称。 如果属性已经是string了,那么它不需要显式地使用templatename
来渲染文本框,所以你可以传递null
。 请注意,它不需要明确的id参数,它会从元素名称中推断出来。 而所有的validation事情仍然在EditorFor中处于活动状态
@Html.EditorFor(x => x.Data, "string", Model.Key + "_Data")
本的回答让我知道我在找什么,除非你需要用Html.Raw来包装
@Html.Raw(Html.TextBoxFor(x => x.Data).ToString().Replace("Data", "NewData"))
有点“不值钱”=),试试:
@Html.TextBoxFor(x => x.Data).ToString().Replace("Data", "NewData")
对我来说,它的工作原理! 我希望有帮助!
@Html.EditorFor(model => model.Nome, new { htmlAttributes = new { @class = "form-control", @maxlength = "80", @id = "NomeFilter", @Name = "NomeFilter" } })