【问题标题】:MVC using the same partial view twice in the same viewMVC 在同一个视图中使用同一个局部视图两次
【发布时间】:2010-06-18 04:43:09
【问题描述】:

我有一个名为“地址”的强类型分部视图。此部分视图包含与 Adress 模型类关联的“输入”字段。我想在同一个视图中渲染两次,因为用户必须输入公司地址和送货地址。

由于呈现的“输入”的 ID 不是唯一的,因此客户端验证存在问题。

另外,我使用 DataAnnotationModelBinder 将模型返回到 httppost。由于 Request.Forms 中的名称冲突,我无法获取这两个地址对象。

有没有办法设置一种范围,以便每个部分视图的“输入”的 id 具有可由 modelBinder 识别的唯一 ID?

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    我不关心验证问题和数据注释,但通常你可以像这样处理多个部分:

    • 构建一个聚合两个地址的视图模型。假设它是具有公共属性 BusinessAddress 和 DeliveryAddress 的 AddressViewData。两者都是地址类型。 Address 有一个附加属性“InstanceName”。你用“BusinessAddress”和“DeliveryAddress”填写InstanceName

    • 视图中调用 RenderPartial("Address",Model.BusinessAddress ) 和 RenderPartial("Address",Model.DeliveryAddress)

    • 在Partials中使用类似这样的东西

      Html.TextBox(Model.InstanceName + ".Street" )

    结果是一个表单元素,其名称属性类似于“BusinessAddress.Street” DefaultModelbinder 将正确绑定它。您的操作应使用参数

    public ViewResult CreateAddress(AddressViewData  addresData)
    

    【讨论】:

      猜你喜欢
      • 2016-02-12
      • 1970-01-01
      • 1970-01-01
      • 2019-04-21
      • 1970-01-01
      • 2014-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多