Lor*_*pts 1 c# asp.net-mvc visual-studio-2010 asp.net-mvc-3
当我尝试访问视图时在我的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; }
}
}
Run Code Online (Sandbox Code Playgroud)
View有这样的东西(部分,只是把那个给出错误的部分,没有超过那个...
@model MvcTest.Models.ContactMeModel
@{
ViewBag.Title = "test"
}
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<div class="editor-label">
@Html.LabelFor(model => model.From)
</div>
}
Run Code Online (Sandbox Code Playgroud)
名称空间是正确的,但是intellisense在标记的.From部分显示为红色,就像它不能识别模型一样,但是这种情况也会发生.
当我访问View时出现以下错误:
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?)
Run Code Online (Sandbox Code Playgroud)
这很奇怪,因为(a)Mvc web项目是对包含模型的DLL的引用(b)整个项目已经清理和重建(c)视图中的模型引用具有正确的完全限定模型名称(d) )模型类存在(e)除了在该视图上的运行时,没有编译错误.
顺便说一句,错误发生在我拥有@ Html.LabelFor的任何地方,所以例如股票LogOn.cshtml有一行产生相同的错误:
@Html.LabelFor(m => m.UserName)
Run Code Online (Sandbox Code Playgroud)
在"intellisense"中,我看到"UserName"文本用带锯齿的红线加下划线,而intellisense提到相同的错误.但是如果在同一页面上我将@model行悬停在模型名称上并执行"转到定义"VS将我带到定义.所以,它知道模型是什么,但后来不完全?!如果模型命名空间不正确,我选择"转到定义"时会出现"导航"错误.
控制器动作方法如下所示:
public ActionResult Contact()
{
return View(new Coralys.PanamaVibes.Mvc.Models.ContactMeModel());
}
Run Code Online (Sandbox Code Playgroud)
所以是的,它返回正确的模型,而不是匿名类型.
花了整整一天搜索互联网和研究.我比较了我的旧解决方案和新解决方案并找到了罪魁祸首.
事实证明,除了内容和其他一些代码背后的差异之外,主要的不同之处在于,在破碎的解决方案中我实现了自定义的webviewpage!在一个充满启发的时刻,我来到了这里.这让我想到了下一个问题,为什么它只打破强类型视图,但它能够导航到模型?
简单的答案是,自定义webviewpage由常规版本和通用版本组成.通用版本用于强类型视图.
我检查了自定义的webviewpage,我从@haacked在他的博客上的贡献中增强了这个页面.该博客上最后一条评论之一是一个人(马修),他使用强类型视图并遇到同样的问题.因此,解决方案是修改自定义webviewpage的通用版本,以便不是从自定义非泛型版本继承,而是从WebViewPage继承.然后所有强类型视图再次工作,CS1061错误消失了.
我还强烈推荐@hatchet提示,在Release版本中启用BuildViews(不在Debug中,因为它延长了重建阶段).
自定义WebViewPage的示例虽然已经发布,但非常有用,现在我可以创建自己的帮助程序而不会过度拥挤Html和Url帮助程序.奇怪的是,当我寻找类似的东西时,他是唯一真正的文章处理在MVC3中制作自定义助手的问题.
| 归档时间: |
|
| 查看次数: |
4932 次 |
| 最近记录: |