如何在所有aspx网站中添加所有文本框,例如:
<%: Html.TextBoxFor(model => model.Firstname, new { style = "float: left; width: 4.1em;", maxlength = "4" })%>
一个javascript函数,无需搜索它们并手动添加类似:
new { onkeyup='Foo(this); return false;' }
想法:写一个ascx
,如下所示!
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<%: Html.TextBox( string.Empty,
ViewData.TemplateInfo.FormattedModelValue,
new { onkeyup = "foo(this); return false;" })%>
请让我们说ascx
名为Test.ascx
它存储在\Views\Shared\EditorTemplates\
。
我的问题是“Test.ascx”没有被调用
为什么呢?
必须将引用添加到所有aspx站点吗?
继承中是否有< System.String>
缺失?
任何帮助都没问题。
非常感谢你。
答案 0 :(得分:1)
要调用自定义编辑器模板,您需要使用:
<%= Html.EditorFor(model => model.Firstname) %>
而不是:
<%= Html.TextBoxFor(model => model.Firstname, new { style = "float: left; width: 4.1em;", maxlength = "4" })%>
通过使用Html.TextBox,您显式地对此值进行了硬编码,并且您想要<input type="text" ...
并且无法覆盖或替换它。这就是使用Html.EditorFor
的好习惯,因为它允许您通过在Views\Shared\EditorTemplates
文件夹中定义自定义模板来修改呈现方式。
现在,如果您调用编辑模板:Test.ascx
,您可以像这样调用它:
<%= Html.EditorFor(model => model.Firstname, "Test") %>
或使用[UIHint]
属性修饰您的视图模型属性:
[UIHint("Test")]
public string Firstname { get; set; }
然后简单地说:
<%= Html.EditorFor(model => model.Firstname) %>