Html.DisplayFor 编译错误 - MVC 2

Posted

技术标签:

【中文标题】Html.DisplayFor 编译错误 - MVC 2【英文标题】:Html.DisplayFor Compile Error - MVC 2 【发布时间】:2012-01-04 22:12:58 【问题描述】:

我收到以下错误:

The type arguments for method 'System.Web.Mvc.html.DisplayExtensions.DisplayFor<TModel,TValue>(System.Web.Mvc.HtmlHelper<TModel>, System.Linq.Expressions.Expression<System.Func<TModel,TValue>>, string)' cannot be inferred from the usage. Try specifying the type arguments explicitly.

这是我的部分观点:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MyApp.Data.Person>" %>
<fieldset>

    <legend>Information</legend>

    <div class="display-label">ID</div>
    <div class="display-field"><%: Model.ID %></div><br />

    <div class="display-label">Name</div>
    <div class="display-field"><%: Model.Name %></div><br />

    <div class="display-label">DOB</div>
    <div class="display-field"><%: String.Format("0:g", Model.DOB) %></div><br />


    <div class="display-label">On Alert</div>
    <div class="display-field"><%: Html.DisplayFor(Model.OnAlert, "FormBoolean") %></div><br />

    <div class="display-label">Deactivated</div>
    <div class="display-field"><%: Model.Deactivated %></div><br />

</fieldset>

这是我的 FormBoolean 显示模板:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Boolean>" %>
<div class="formValueShort"><%= Html.Encode(Model ? "Yes" : "No") %></div>

任何人都可以对此有所了解吗?我也尝试过“LabelFor”(不包括“FormBoolean”)、HiddenFor、EditorFor - 都给出了相同的信息。这很奇怪,因为我在我的项目中使用了这些,所以我不确定为什么它会卡在这个特定的项目上。

如果我需要提供更多信息,请告诉我!

【问题讨论】:

【参考方案1】:

DisplayFor 的第一个参数是lambda expression。你需要这样调用:

<%: Html.DisplayFor(m => m.OnAlert, "FormBoolean") %>

【讨论】:

啊!很简单!这是漫长的一天!非常感谢。时间到了,我会把你的答案标记为正确的:)

以上是关于Html.DisplayFor 编译错误 - MVC 2的主要内容,如果未能解决你的问题,请参考以下文章

MVC3 Html.DisplayFor -- 是不是可以让这个控件生成一个 ID?

在 MVC5 中使用 Html.DisplayFor() 的日期格式

我想了解 @Html.DisplayFor(modelItem => item.FirstName) 中的 lambda 表达式

单击时 - 使 @Html.DisplayFor 成为可编辑的文本字段

SQL Server 数据库集,配置集 - 但来自数据库的数据未使用 @Html.DisplayFor<>() 显示?

为啥我的 DisplayFor 没有循环通过我的 IEnumerable<DateTime>?