代码之家  ›  专栏  ›  技术社区  ›  Interfector

如何在Post上读取复杂视图模型?

  •  1
  • Interfector  · 技术社区  · 15 年前

    我有一个具有以下属性的用户视图模型:

     public User user;
        public List<Language> Languages;
    

    我将上述模型发送到视图,并使用HTML助手来构建表单,因此最终得到如下结果:

    <form action="/Users/Edit/5" method="post"><input id="user_UserId" name="user.UserId" type="hidden" value="5" />
    

    名字


    电子邮件

    <br />
    <input id="user_Email" name="user.Email" type="text" value="test@gmail.com" />
    

    语言
    - 恩

    现在,我试着读这篇文章,最初的内容是:

    [AcceptVerbs( HttpVerbs.Post )]
    

    公共操作结果编辑(int userid,formcollection表单){

    无法获取user.userid变量、user.firstname变量等。

    任何知道需要做什么才能阅读这种邮件请求。我有点不愿意修改我的视图模型,因为它非常简单,并且易于维护。

    谢谢您。

    2 回复  |  直到 13 年前
        1
  •  2
  •   pvieira    15 年前

    我以前也遇到过类似的问题。这篇文章很有帮助: Editing a variable length list

        2
  •  0
  •   Interfector    15 年前

    显然,简单的答案是使用前缀,比如:

    public ActionResult Edit([Bind(Prefix="user")] int UserId, FormCollection form ) { }

    但是,我仍然得到

    参数字典包含 的参数“userid”的条目为空 的不可为空的类型“System.Int32” 方法'system.web.mvc.actionResult 编辑(32) system.web.mvc.formcollection)'

    知道怎么修吗?