在mvc视图中模型Null引用异常

时间:2013-03-29 08:24:35

标签: asp.net-mvc asp.net-mvc-4

问题是从控制器向视图传递数据时获得空引用异常

我正在将模型传递给控制器​​的视图,如下所示:

 {
    ViewBag.PartId = id;
    var viewmodel= new Orderviewmodelnew();
    var order = new OrderMnagernew().GetSingleOrderField(id);
    viewmodel.ProjectId=order.ProjectId;
    return View(viewmodel);
 }

在视图中我有这样的代码

 @model DreamTrade.Web.BL.ViewModels.OrderViewModelnew


 Home>Project @Model.ProjectID==null??//projected is of type guid

 Customer :@(Model.CreatedBy??string.empty)

 Project :@Model.ProjectID
     @Model.ProjectDetail

  CreatedBy:@Model.CreatedBy

  Creation Date:@Model.CreationDate

 CompletedBy :@Model.ModifiedBy
 Completion Date:@Model.LastModified

 @Model.Image

   @Html.Action("OrderIndex", "Ordernew", new { PartId = Guid.Parse("C0497A40-2ADE-4B23-BA9F-1694F087C3D0") })

我试过这样的

@if(Model.ProjectId==Null)
 {/....}

在控制器中,我尝试这样做,如果它是null,则不传递模型

 var order = new OrderMnagernew().GetSingleOrderField(id);
    if(order!=null)
   {
        viewmodel.ProjectId=order.ProjectId;
        return View(viewmodel);

   }
 return View()

视图中的projectid问题显示异常。

我想显示空字符串,如果它为空并显示剩余部分..

2 个答案:

答案 0 :(得分:5)

此代码错误:

@Model.ProjectID==null??string.empty

如果ProjectID是可空类型,您应该写:

@(Model.ProjectID ?? string.empty)

<强>加了:

替换:

return View()

使用:

return View(new Orderviewmodelnew())

因为null对象没有任何属性

答案 1 :(得分:0)

通过

@model DreamTrade.Web.DALNew.Source

在您的视图顶部,您正在创建一个强类型视图,该视图需要该类型的模型。

但是,在控制器中,您传递的是Orderviewmodel

类型的模型

您需要确保传递给视图的模型属于正确的类型。