用户模型:
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”,因此在提交时,公司不会与用户绑定。
那么,正确的做法是什么?