完整错误文字:
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>>)' cannot be inferred from the usage. Try specifying the type arguments explicitly.
它刚刚开始发生,但我不相信我做了任何会影响此功能的更改。它会抛出VS intellisense错误,但页面功能正常。
不是“For”帮助程序的Html帮助程序工作得很好,它只包含这些表达式。
违规标记(100个例子):
<%: Html.DisplayFor(model => model.PortfolioName) %>
页面指令:
<%@ Page Language="C#" Inherits="ViewPage<My.Namespace.PortfolioViewModel>" %>
查看型号:
namespace My.Namespace
{
public class PortfolioViewModel
{
[Required(ErrorMessage = " ")]
[DataType(DataType.Text)]
[DisplayName("Portfolio Name:* ")]
public string PortfolioName { get; set; }
}
}
答案 0 :(得分:4)
这听起来很愚蠢,我知道,但是你试过关闭并重新开启VS吗?
答案 1 :(得分:2)
当我之前遇到此问题时,我们升级了MVC版本并且web.config引用未正确更新。这意味着视图依赖于对旧版HTML扩展方法的引用。
查看您的参考资料并确保版本正确。
答案 2 :(得分:0)
Html.DisplayFor
方法将为指定的类型找到合适的显示模板。异常似乎有点奇怪但它可能表明没有为字符串类型注册显示模板。
您可能需要尝试使用Html.LabelFor
进行测试。你有一个特殊的字符串显示模板吗?