所以我在创建的 MVC3 布局中发生了一些奇怪的事情。它是 BaseVM 的强类型。每个 View 模型都继承自 BaseVM。当我调试并单步执行代码并单步执行我的布局时,BaseVM 模型不为空,它调用一个方法来获取页脚中版权的当前年份。但是,一旦我走到布局的底部,它就会在我调用属性以获取年份的地方抛出异常,突然模型为空。现在这不会导致应用程序显示错误屏幕或消息,但每次加载页面时都会记录此异常。这是一个代码示例:
public class BaseVM
{
public string CurrentYear
{
get
{
return DateTime.Today.Year.ToString();
}
}
public BaseVM()
{
}
}
public class PrelaunchReserveVM : BaseVM
{
public PrelaunchDTO Prelaunch { get; set; }
public PrelaunchReserveVM()
: this(new PrelaunchDTO()) { }
public PrelaunchReserveVM(PrelaunchDTO prelaunch)
: base()
{
this.Prelaunch = prelaunch;
}
}
控制器中的动作:
public ActionResult Reserve()
{
return View("Reserve", new PrelaunchReserveVM(new PrelaunchDTO()));
}
布局:
@model StickyThink.Models.VM.BaseVM
...
<div id="container">
<div id="main" role="main" style="padding: 0px; margin: 0px;">
@RenderBody()
</div>
</div>
<footer>
<div id="FooterPageContainer" class="center">
Copyright © @Model.CurrentYear ... All rights reserved.
</div>
</footer>
<!-- END: Add your site or application content here -->
@Html.Partial("_Scripts")
@RenderSection("scripts", false);
所以它进入@Model.CurrentYear 并且模型不为空。然后它降级到@RenderSection(从视图中渲染一些脚本),然后抛出异常并且@Model 为空。想法?