我有一个名为“Adress”的强类型部分视图。此部分视图包含与Adress模型类关联的“输入”字段。我想在同一视图中渲染两次,因为用户必须输入业务地址和传递地址。
我遇到客户端验证问题,因为呈现的'input'的ID不是唯一的。
此外,我使用DataAnnotationModelBinder将模型返回到httppost。由于Request.Forms中的名称冲突,我无法获得这两个地址对象。
有没有办法设置一种范围,所以每个局部视图的'input'的id都有一个可由modelBinder识别的唯一ID?
答案 0 :(得分:2)
我对验证问题和数据注释不感兴趣,但通常你可以使用这样的多个部分:
构建一个聚合2个地址的Viewmodel。让我们说它的AddressViewData具有公共属性BusinessAddress和DeliveryAddress。两者都是Address类型。地址有一个附加属性“InstanceName”。使用“BusinessAddress”和“DeliveryAddress”
在视图中调用RenderPartial(“Address”,Model.BusinessAddress)和RenderPartial(“Address”,Model.DeliveryAddress)
使用了像这样的东西
Html.TextBox(Model.InstanceName +“。Street”)
结果是一个具有类似“BusinessAddress.Street”的名称属性的Formelement DefaultModelbinder将正确绑定它。您的操作应使用参数
public ViewResult CreateAddress(AddressViewData addresData)