Asp.net Mvc显示String的模板,但现在每个简单类型都想使用它!

Jas*_*ore 8 asp.net-mvc-2

我创建了一个显示模板,当传递一个字符串时会呈现一个禁用的文本框

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<String>" %>
<%: Html.TextBoxFor(model => model, new { disabled = "disabled" })%>
Run Code Online (Sandbox Code Playgroud)

哪个效果很好.但是,出于某种原因,MVC想要通过它来尝试填充DateTimes和Ints,这就是抛出异常

传递到字典中的模型项的类型为"System.Int32",但此字典需要"System.String"类型的模型项.

有任何想法吗?

Man*_*ous 10

您不需要强烈地将模板键入String.

你可以尝试这样的事情:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<%= Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue,
             , new { disabled = "disabled" }) %>
Run Code Online (Sandbox Code Playgroud)

在你看来,你这样称呼它

Html.DisplayModelFor(model => mode.name);
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅他在ASP.NET MVC中的模板系列文章中的Brad Wilson 文章中的字符串的默认内置编辑器模板示例.

你应该考虑完成整个系列.我无法表达这个系列对我有多大帮助.