.NET MVC:如何在提交时将子模型(动态加载)的部分视图绑定到父模型

时间:2019-04-07 09:55:32

标签: .net asp.net-mvc partial-views model-binding

用户模型:

 public int id { get; set; }
 public string user_name { get; set; }
 public int user_rol { get; set; }
 [ForeignKey("company")]
 [Required]
 public int id_company { get; set; }
 public virtual Company company { get; set; }

公司型号:

 public int id { get; set; }
 public string company_name { get; set; }
 //other properties here//

UserViewModel:

 public int id { get; set; }
 public int user_name { get; set; }
 public int user_rol { get; set; }
 [ForeignKey("companyExisting")]
 public int id_company_existing { get; set; }
 [ForeignKey("companyNew")]
 public int id_company_new { get; set; }
 public virtual companyExisting { get; set; }
 public virtual companyNew { get; set; }

用户始终与公司关联,但是如果所选角色为“ a”,则必须选择现有公司。如果rol为“ b”,则必须创建一个新公司。 (这就是为什么我用2个公司创建视图模型的原因,这两个公司都是可选的,而User模型只有一个公司的属性,是必需的)。

因此,在“用户/创建”中,当user_rol下拉列表更改时,如果所选rol为“ b”,我将发送ajax请求以从服务器获取新公司的部分视图,并将其显示给用户:

public ActionResult addNewCompany () {
    return PartialView("~/Views/Shared/EditorTemplates/Company.cshtml", new Company());
}

这可以使部分视图进入浏览器,但问题是部分视图没有模型前缀(其字段名称类似于“ company_name”,而不是“ user.company_name”,因此在提交时,公司不会与用户绑定。

那么,正确的做法是什么?

0 个答案:

没有答案