我正在运行ASP.NET MVC 3,我正在查看模型的编辑视图。我有一个FullName
属性,我想将其呈现为“全名”。
以下是违规行:
<div class="display-label">
<%: Html.LabelFor(model => model.FullName, "Full name") %>
</div>
现在intellisense 显示过载存在 - 有两个签名,第一个只接受表达式,第二个接受表达式和要显示的字符串。但是,当我浏览页面时,我得到了标题异常('无重载......')。
任何人都有使用此重载的任何成功,以及有关我可能缺少的任何建议吗?
更新:我尝试重新安装MVC3无济于事。但是我在错误页面的编译器输出中注意到了这一点:
c:\Windows\assembly\GAC_MSIL\System.Web.Mvc\2.0.0.0__31bf3856ad364e35\
System.Web.Mvc.dll: (Location of symbol related to previous error)
这向我表明我使用的是MVC 2,而不是MVC 3.
我错误配置了什么,或者为什么我的IIS会使用MVC 2而不是MVC 3?我该如何解决这个问题?
答案 0 :(得分:8)
如果这是一个MVC 2项目,你应该检查你的web配置。
您可能在项目参考中引用了DLL的正确版本,但在运行时在Web配置中引入了2.0.0.0?
http://blog.devlpr.net/2010/07/27/upgrading-an-asp-net-mvc-2-project-to-asp-net-mvc-3/
在我的MVC3应用中:
<add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
答案 1 :(得分:4)
而不是这样做,用[DisplayName]
属性装饰字段:
[DisplayName("Full name")]
public string FullName { get; set; }
然后你可以使用常规重载:
<%: Html.LabelFor(model => model.FullName) %>
答案 2 :(得分:2)
您需要确保在项目中引用MVC 3.0。由于这个程序集有一个强大的名称,你应该得到它或失败。
为此,在Visual Studio中,选中Solution Explorer,[Project],References,单击System.Web.Mvc,然后检查属性网格中的'Version'属性。它应该是3.x。
如果你有,那么检查web.config或machine.config并确保MVC 2.x上没有强制重定向。
为此,在项目的所有Web.config文件中,全局并替换MVC版本(通过此System.Web.Mvc替换此System.Web.Mvc,Version = 2.0.0.0,Version = 3.0.0.0)
最后,您还可以使用root web.config中的此代码段强制重定向从2到3:
...
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="2.0.0.0" newVersion="3.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
...
答案 3 :(得分:1)
有一个overload需要两个参数。
但你可以试试
<%: Html.LabelFor(model => model.FullName) %>
并在您的模型中
public class ModelClass{
..
..
[DisplayName("Full Name")]
public string FullName{
答案 4 :(得分:0)
方法LabelFor<TModel, TValue>(HtmlHelper<TModel>, Expression<Func<TModel, TValue>>, String)
是在MVC 3.0上引入的。
比较
http://msdn.microsoft.com/en-us/library/system.web.mvc.html.labelextensions(v=vs.98).aspx
与
http://msdn.microsoft.com/en-us/library/system.web.mvc.html.labelextensions.aspx(MVC 2.0)。
然而,当我浏览页面时我 得到标题的例外('没有 过载...')。
也许你的IIS上没有激活MVC 3.0。