回发的模型具有空值

时间:2014-03-31 16:10:43

标签: c# asp.net-mvc razor

我在我的控制器中有这个,它被发布到表单提交。

        [HttpPost]
        public ActionResult Add(OrderDetailsViewModel thisWindowModel)
        {
            if (!ModelState.IsValid)
            {
                return View(thisWindowModel);
            }

当模型staie无效并且我将模型返回到视图时,我得到一个对象引用没有设置指向此行的异常:

<h2>Order Details:@Model.Style.Name</h2>

当我进入httppost方法时,我已经检查了“thisWindowModel”,并且样式确实在那里为空....但为什么要这样做?/如何修复?

更新

我现在也尝试添加hiddenfor,甚至将我的模型更改为只使用stylename作为字符串,但它仍然失败会引发空引用异常。

 @if(Model==null)
        {
            <h2>model null</h2>

        }else{

            if(Model.StyleName==null)
            {
                <h2>model style null</h2>
            }

        <h2>Order Details:@Model.StyleName</h2>
        } 

在最后一次'}'

2 个答案:

答案 0 :(得分:1)

在表单中

,为您的模型项添加Html.HiddenFor()。如你所知,它不知道如何在回发时重建模型时重新创建Model.Style.Name

答案 1 :(得分:1)

您必须在表单帖子中发布@Model.Style.Name,您刚刚在标题标记的视图中使用它,但您需要以形式发布所有模型属性,否则会发布null

在表单中使用@Html.HiddenFor(x=>x.Style.Name),以便在表单中发布此属性值。