Rob*_*ett 94 c# html-helper razor asp.net-mvc-3
是否可以在使用Html.TextBoxFor时覆盖name属性?
我试过没有成功.我需要使用TextBoxFor来使客户端验证工作,但是由于我不会进入的原因,我需要文本框的名称与生成的文本框的名称不同.
我尝试过以下方法:
@Html.TextBoxFor(x => x.Data, new { name = Model.Key + "_Data", id = Model.Key + "_Data" })
Run Code Online (Sandbox Code Playgroud)
哪个适用于ID但不适用于名称.这可能吗?
更新:查看TextBoxFor的代码.它看起来并不简单.希望有人可以证明我错了.
ana*_*lov 221
Rob,实际上有一种更简单的方法.而不是名称,使用名称:
@Html.TextBoxFor(x => x.Data, new { Name = Model.Key + "_Data", id = Model.Key + "_Data" })
Run Code Online (Sandbox Code Playgroud)
Jam*_*ack 41
你问这个是因为你想在名字上加一个前缀吗?如果是这样,您可以通过ViewData.TemplateInfo.HtmlFieldPrefix在Controller中进行设置来完成此操作.
我从Brad Wilson的博客那里学到了很多东西.
Pro*_*one 13
EditorFor有一个重载,您可以将该name属性作为参数提供:
@Html.EditorFor(expression, null, name)
Run Code Online (Sandbox Code Playgroud)
Ali*_*avi 10
它被称为“微软陷阱” ...
使用大写的名称,就像这样
@Html.TextBoxFor(m => m.Reply.Answer, new { Name = "Whatyouwant" })
Run Code Online (Sandbox Code Playgroud)
试试EditorFor.如果要确保即使属性类型不是字符串也要呈现文本框,也可以将字符串作为模板名称传递.如果property已经是字符串,则不需要templatename显式渲染文本框,因此您可以传递null.请注意,它不需要显式的id参数,它将从元素名称推断它.使用EditorFor,所有验证功能仍然有效
@Html.EditorFor(x => x.Data, "string", Model.Key + "_Data")
Run Code Online (Sandbox Code Playgroud)
本的回答让我得到了我想要的东西,除非你需要用Html.Raw包装
@Html.Raw(Html.TextBoxFor(x => x.Data).ToString().Replace("Data", "NewData"))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
68365 次 |
| 最近记录: |