首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Partials With View Data Object

Partials With View Data Object
EN

Stack Overflow用户
提问于 2010-10-06 07:48:54
回答 1查看 211关注 0票数 0

我有下面的ViewData,我将其传递给视图。

代码语言:javascript
复制
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个局部视图。商家信息,地址,商家属性

在我看来,我有一个交易模型,它与Merchant共享相同的字段名称,即"Name“

我不能把它们放在相同的形式,因为它们的名字是一样的。

我最终做的是将所有10个部分视图放入一个巨大的表单中(我在这一点上开始哭了),并像这样绑定。

代码语言:javascript
复制
<%: Html.TextBoxFor(model => model.Deal.Name)%>
<%: Html.TextBoxFor(model => model.Deal.Name)%>

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

我想做的事情如下。

代码语言:javascript
复制
<% Html.RenderPartial("MerchantForm", Model.Merchant) %>
<% Html.RenderPartial("DealForm", Model.Deal) %>

但是我如何给所有的TextBoxFor片段添加一个前缀,或者最好是渲染部分标记。

希望我提供了足够的信息,或者我只是做错了。从长远来看,这两种方法都会对我有所帮助,所以提前谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-10-06 19:13:07

也许我没有完全理解这个问题,但我认为这正是Html.EditorFor(x=>x...)的作用所在。

在视图所在的目录中创建一个名为"EditorTemplates“的文件夹。在这里输入你的分音,并给他们与你的模型类型相同的名称(例如,将"MerchantForm.ascx“重命名为"Merchant.ascx")。

在您的主视图中,而不是

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

使用

Html.EditorFor(x=>x.Merchant)

模板系统将为您处理前缀,因此在post时,模型绑定器将正确地绑定所有内容。

如果您已经为模型中的所有复杂对象设置了模板,那么您甚至可以更进一步,在您的主视图上只需调用

Html.EditorForModel()

它将反映模型中的属性,并调用它们的相关编辑器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3868601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档