代码之家  ›  专栏  ›  技术社区  ›  Michael Grassman

带有视图数据对象的部分

  •  0
  • Michael Grassman  · 技术社区  · 14 年前

    我将以下视图数据传递到视图中。

    public class MerchantSignUpViewData : BaseViewData
    {
        public Merchant Merchant { get; set; }
        public Address Address { get; set; }
        public Deal Deal { get; set; }
        public List<MerchantContact> Contacts { get; set; }
        public int TabIndex { get; set; }
        public List<DealPricing> DealPricing { get; set; }
    
    }
    

    我还创建了3个局部视图。商户信息、地址、商户财产

    在我看来,我有一个交易模型,它与商人共享相同的字段名,即“名称”。

    我不能用同样的形式写,因为名字是一样的。

    我最后做的是把所有的10个局部视图放到一个巨大的形式中(我开始哭到这一点),然后像这样绑定。

    <%: Html.TextBoxFor(model => model.Deal.Name)%>
    <%: Html.TextBoxFor(model => model.Deal.Name)%>
    

    这将为我提供表单元素的正确名称。

    我想做的是以下。

    <% Html.RenderPartial("MerchantForm", Model.Merchant) %>
    <% Html.RenderPartial("DealForm", Model.Deal) %>
    

    但是,如何在所有文本框中为片段添加前缀,或者首选呈现部分标记。

    希望我提供了足够的信息,或者我只是做了错误的方式。从长远来看,他们都会帮助我,所以提前谢谢。

    1 回复  |  直到 14 年前
        1
  •  1
  •   Chao    14 年前

    也许我不太明白这个问题,但我认为这正是 Html.EditorFor(x=>x...) 是为了。

    在视图所在的目录中创建一个名为“editoremplates”的文件夹。将您的部分放在这里,并将它们与您的模型类型同名(例如将“Merchantform.ascx”重命名为“Merchant.ascx”)。

    在主视图中而不是

    Html.RenderPartial("MerchantForm", Model.Merchant)

    使用

    Html.EditorFor(x=>x.Merchant)

    模板系统将为您处理前缀,以便在发布时模型绑定器将所有内容正确绑定。

    Html.EditorForModel()