Ответ 1
Вы можете попробовать указать один и тот же префикс при привязке назад:
[HttpPost]
public ActionResult Create([Bind(Prefix = "Create")] CreateViewModel model)
{
...
}
Здравствуйте, я недавно начал работу на основном веб-узле ASP.NET на основе JQuery/JQueryUI. Идея заключалась в том, чтобы иметь только одну страницу, а остальную часть контента - динамическую и т.д., Загружаемую через диалоги и ajax.
Однако проблема заключается в том, что форматы Create и Edit для одной и той же модели открыты в диалоговых окнах, в то время как некоторые виджеты JQueryUI, такие как DatePicker, перестают работать как формы, для DOM требуется дублировать идентификатор в полях, которые присутствуют в обоих.
Поэтому я попытался использовать этот код на контроллере:
ViewData.TemplateInfo.HtmlFieldPrefix = "Create"; // or Edit etc
Это помогло исправить проблему DatePicker, но поля больше не сопоставлялись с моделью, когда они были отправлены обратно в контроллер.
Кто-нибудь знает, как это исправить?
Вы можете попробовать указать один и тот же префикс при привязке назад:
[HttpPost]
public ActionResult Create([Bind(Prefix = "Create")] CreateViewModel model)
{
...
}
Для тех, кто имеет такую же проблему, вы также можете просто переименовать свою модель в "create", как показано ниже:
[HttpPost]
public ActionResult Create(CreateViewModel create)
{
...
}
Что я думаю, выглядит лучше, но это немного рискованно. Если другой разработчик или вы решите изменить имя параметра позже, форма будет ломаться, что не идеально.
Я понял это, так как одна из моих форм правильно связывалась, а другая - нет. У одного был префикс в качестве имени параметра, а один - просто "модель".