加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 为什么当我将模型传递给我的.Net MVC 4 Controller A

发布时间:2020-12-16 06:49:07 所属栏目:asp.Net 来源:网络整理
导读:我打算将酒店模型传递给我的控制器操作 – 对其进行一些检查/处理,然后返回在部分视图中呈现的可能不同的酒店模型. 我得到的问题是,如果我将oHotelParameter模型传递给Action,那么PartialView使用传递给Action的模型而不是传递给PartialView方法的模型. 如果
我打算将酒店模型传递给我的控制器操作 – 对其进行一些检查/处理,然后返回在部分视图中呈现的可能不同的酒店模型.

我得到的问题是,如果我将oHotelParameter模型传递给Action,那么PartialView使用传递给Action的模型而不是传递给PartialView方法的模型.

如果我从操作中删除oHotelParameter参数,则使用oHotel按预期渲染视图.

public ActionResult _SaveMasterDetails(Hotel oHotelParameter)
    {
        //Do some processing on oHotelParameter

        //........
        Hotel oHotel = new Hotel();
        oHotel.GetHotelInfoById(14); //This gets a different Hotel object just for a test

        //For some reason oHotel is ignored and oHotelParameter is used instead unless I remove oHotelParameter 
        return PartialView("_MasterDetails",oHotel);
    }

当我调试View时,我看到Model被设置为我传递给PartialView(oHotel)的值,但是我看到从Action返回的结果包含来自oHotelParameter对象的数据.

如果它有所作为,我从jQuery ajax调用Action.

谁能解释为什么会发生这种情况?

解决方法

当mvc处理表单帖子时,它会使用模型的详细信息填充ModelState对象.

这是在从post操作再次呈现视图时使用的,这是因为它验证失败,因此您已将视图退出.

如果要传递新模型而不使用视图状态,则可以在返回视图之前调用ModelState.Clear(),这样可以将视图重新绑定到新模型.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读