HtmlFieldPrefix не сопоставляется с моделью

Здравствуйте, я недавно начал работу на основном веб-узле ASP.NET на основе JQuery/JQueryUI. Идея заключалась в том, чтобы иметь только одну страницу, а остальную часть контента - динамическую и т.д., Загружаемую через диалоги и ajax.

Однако проблема заключается в том, что форматы Create и Edit для одной и той же модели открыты в диалоговых окнах, в то время как некоторые виджеты JQueryUI, такие как DatePicker, перестают работать как формы, для DOM требуется дублировать идентификатор в полях, которые присутствуют в обоих.

Поэтому я попытался использовать этот код на контроллере:

ViewData.TemplateInfo.HtmlFieldPrefix = "Create"; // or Edit etc

Это помогло исправить проблему DatePicker, но поля больше не сопоставлялись с моделью, когда они были отправлены обратно в контроллер.

Кто-нибудь знает, как это исправить?

Ответы

Ответ 1

Вы можете попробовать указать один и тот же префикс при привязке назад:

[HttpPost]
public ActionResult Create([Bind(Prefix = "Create")] CreateViewModel model)
{
    ...
}

Ответ 2

Для тех, кто имеет такую ​​же проблему, вы также можете просто переименовать свою модель в "create", как показано ниже:

[HttpPost]
public ActionResult Create(CreateViewModel create)
{
    ...
}

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

Я понял это, так как одна из моих форм правильно связывалась, а другая - нет. У одного был префикс в качестве имени параметра, а один - просто "модель".