当我尝试访问视图时,我的 MVC3 Razor 应用程序 (ASP.NET) 出现问题模型看起来像这样(已删除注释)
namespace MvcTest.Models {
public class ContactMeModel {
public string From { get; set; }
public string Subject { get; set; }
public string Message { get; set; }
}
}
视图有这样的东西(部分,只是放置给出错误的部分,不会超过那个......
@model MvcTest.Models.ContactMeModel
@{
ViewBag.Title = "test"
}
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<div class="editor-label">
@Html.LabelFor(model => model.From)
</div>
}
命名空间是正确的,但智能感知在标记的 .From 部分显示为红色,就好像它无法识别模型一样,但这也适用于工作的视图。
当我访问视图时,出现以下错误:
CS1061: 'object' does not contain a definition for 'From' and no extension method 'From' accepting a first argument of type 'object' could be found (are you missing a using directive or an assembly reference?)
这很奇怪,因为 (a) Mvc web 项目具有对包含模型的 DLL 的引用 (b) 整个项目已被清理和重建 (c) 视图中的模型引用具有正确的完全限定模型名称 (d ) 模型类存在 (e) 除了在该视图上运行时没有编译错误。
顺便说一句,错误发生在我有@Html.LabelFor 的任何地方,因此例如股票 LogOn.cshtml 有一行产生相同的错误:
@Html.LabelFor(m => m.UserName)
在“intellisense”中,我看到“用户名”文本带有一条锯齿形红线下划线,并且 intellisense 提到了同样的错误。但是,如果在同一页面上,我将 @model 行悬停在模型名称上并执行“转到定义”VS 将我带到定义。所以,它知道模型是什么,但不完全知道?!如果模型命名空间不正确,我在选择“转到定义”时会收到“导航”错误。
控制器操作方法如下所示:
public ActionResult Contact()
{
return View(new Coralys.PanamaVibes.Mvc.Models.ContactMeModel());
}
所以是的,它返回正确的模型而不是匿名类型。