带有空值的HTML.Editor

时间:2013-08-05 12:56:20

标签: asp.net-mvc razor

我有以下_CreateOrEdit局部视图: -

@model TMS.ViewModels.RackJoin
@* This partial view defines form fields that will appear when creating and editing entities *@
 @Html.AntiForgeryToken()
<div >
    <span class="f">RU </span>
    @Html.EditorFor(model => model.Rack.RU)
    @Html.ValidationMessageFor(model => model.Rack.RU)
</div>



<div >
    <span class="f">Rack Name </span>
    @Html.Editor("assetName", (Model.Resource.RESOURCENAME == null ? String.Empty : Model.Resource.RESOURCENAME))

    @Html.ValidationMessageFor(model => model.Resource.RESOURCENAME)
</div>

<div >

编辑现有记录时视图效果很好,但如果它是新对象,我将得到以下异常: -

  

对象引用未设置为对象的实例。描述:   在执行当前期间发生了未处理的异常   网络请求。请查看堆栈跟踪以获取更多信息   错误以及它在代码中的起源。

     

异常详细信息:System.NullReferenceException:对象引用   没有设置为对象的实例。

在视图中的以下代码中: -

@Html.Editor("assetName", (Model.Resource.RESOURCENAME == null ? String.Empty : Model.Resource.RESOURCENAME))

更新

调用上面视图的行动方法是: -

  public ActionResult Create()
        {
            ViewBag.PossibleDataCenters = repository.AllDataCenter().OrderBy(a => a.Name).ToList() ;
            ViewBag.PossibleZones = repository.AllZone().OrderBy(a => a.Name).ToList();
            ViewBag.Products = repository.GetProducts("Rack").OrderBy(a => a.COMPONENTNAME).ToList();

            return View();
        } 

1 个答案:

答案 0 :(得分:0)

我认为问题在于,当您尝试传入新对象时,要么将空模型传递给View,要么模型的所有属性都未初始化

所以在行

Model.Resource.RESOURCENAME

如果Model为null或Model.Resource为null,则会产生相同的错误。

在使用Model

之前尝试检查NULL