Частицы с представлением объекта данных - PullRequest
0 голосов
/ 06 октября 2010

У меня есть следующие ViewData, которые я передаю в представление.

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, которая называется "Имя"

Я не могу поместить их в одну и ту же форму, потому что имена будут одинаковыми.

Я закончил тем, что соединил все 10 частичных представлений в одну огромную форму (я начал плакать в этот момент) и привязался вот так.

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

Это дает мне правильные имена элементов формы.

Я хочу сделать следующее:

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

Но как мне добавить префикс ко всем частям TextBoxFor или предпочтительнее визуализировать частичные теги.

Надеюсь, я предоставил достаточно информации, или, может быть, я делаю это неправильно. Любой из них поможет мне в долгосрочной перспективе, поэтому заранее спасибо.

1 Ответ

1 голос
/ 06 октября 2010

Возможно, я не совсем понимаю проблему, но я думаю, что именно для этого Html.EditorFor(x=>x...).

Создайте папку с именем "EditorTemplates" в той же директории, где находятся ваши представления.Укажите здесь ваши частичные имена и присвойте им то же имя, что и тип вашей модели (например, переименуйте «MerchantForm.ascx» в «Merchant.ascx»).

В вашем основном виде вместо

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

use

Html.EditorFor(x=>x.Merchant)

Система шаблонов будет иметь дело с префиксами для вас, так что на посту связыватель модели будет все правильно связывать.

Если у вас есть шаблоны, настроенные для всех сложных объектов в модели, вы можете даже пойти на шаг дальше, и на главном экране просто позвоните

Html.EditorForModel()

, который отразится наСвойства в вашей модели и вызовите их соответствующие редакторы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...