MVC如何在父类模型中重用视图

时间:2019-03-29 13:19:50

标签: c# asp.net asp.net-mvc razor model-binding

上下文:我需要使用如下两个模型重用剃刀局部视图

public class Address
{
    public string CountryName { get; set; }
    public string CityName { get; set; }
    public string StreetName { get; set; }
    public string PostalCode { get; set; }
    public string StreetNumber { get; set; }
}

public class Customer
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public Address Address { get; set; }
}

视图应如下所示:没有 form 标签,没有提交按钮,只有绑定到模型的控件

@Html.LabelFor(m => m.CountryName)
@Html.TextBoxFor(m => m.CountryName)

挑战在于,该视图应作为“地址编辑表单”和任何其他表单的一部分插入。结果被发送到具有不同模型的不同动作。当只是“地址编辑”表单时,没有问题,控件绑定到“地址”类的属性,并且一切正常。

当我尝试在另一种形式(地址是模型的属性而不是模型本身(客户))中使用它时,就会出现问题。我不能仅将地址字段作为此视图的模型,因为该操作正在等待Customer.Address,但是控件绑定到属性而没有提及Customer

这是HTML的区别

<!-- Edit Address -->
<label for="CountryName_input">Country</label>
<input id="CountryName_input" name="CountryName" type="text" value="">

<!-- Edit Customer -->
<label for="Address_CountryName_input">Country</label>
<input id="Address_CountryName_input" name="Address.CountryName" type="text" value="">

在两种情况下都可以使用此视图吗?我开始研究需要

的HTML帮助器。
Expression<Func<TModel, string>> selector

但直到现在都没有成功。

有人可以帮助我吗?

0 个答案:

没有答案