2011-09-19 91 views
3

我在将模型传递给部分以及处理模型中的空值时如何处理空值时出现问题。在部分和空模型值中处理空模型

在此块中:

@section TaskBar{ 
    @Html.Partial("_TaskBar", Model); 
} 

我得到这个错误: E:\视图\ Shared_TaskBar.cshtml(107):错误CS1002:;预计

???

此外,在部分

具有空值的问题我已经试过: this.userID = ko.observable( “@如果(Model.UserID == NULL){” 空“} {其他型号。用户名}”);

this.userID = ko.observable("@(Model.UserID == null)?"null" :Model.UserID"); 

用;等...

所以我的问题是..我的部分将经常传递一个空模型..所以如何处理部分方法,如果null如何在视图中处理?谢谢!

回答

9

我不清楚你对模型null意味着什么,因为你的例子检查UserId是否为null而不是模型本身。所以,假设你的意思是检查整个模型,我个人会在我的观点开始时使用一个简单的if。 像这样

@model MyViewModel 
@if (Model != null) { 
<div> 
    @Model.UserId 
</div> 
} 

或者当你定义RenderSection通过Required=false所以声明节时,你可以选择做,如果该模型具有价值或没有。

在你layout.cshtml

@RenderSection("Taskbar", false) 

@if (Model != null) { 
    section TaskBar{ 
    @Html.Partial("_TaskBar", Model); 
    } 
} 
2

为了简化你的代码,你应该利用Null Object pattern页面。

不是使用null来表示一个不存在的值,而是使用初始化为空/无意义值的对象。通过这种方式,您无需检查数十个空位,并在您错过时获取NullReferenceExpections。

甚至有一个更简单的方法,从中得出。不要创建特定的NullObject类,只需传递您需要的类的新实例。如果它是一个简单的ViewModel,通常这已经足够了,因为C#已经为你初始化了这些值,并且很可能是你大部分时间想要的。