4

В ASP.NET MVC я хочу повторно использовать часто используемый набор полей кредитных карт, помещая их в частичное представление и отображая частичный вид внутри другой формы в родительском представлении.Как сохранить правильное поведение привязки модели при передаче свойства модели в частичное представление?

Проблема заключается в том, что если объект CreditCard является частью модели, которая является само-собой сложным объектом, когда я передаю ее частичному представлению, при отправке формы в именах полей отсутствует префикс имени родительского свойства, позволит привязке модели по умолчанию сопоставить поля правильному свойству сложного объекта.

поля

Кредитные карты, предоставляемые в частичном (Некорректное поведение):

@Html.RenderPartial("~/Views/Pay/CCForm.cshtml", Model.CreditCard , 
new ViewDataDictionary()); 

Сообщений строка:

PayOption = 1 & CreditCardNumberPlainText = 0000000000000 & StartDateMm = 03 & StartDateYyyy = 2008 & ExpiryDateMm = 03 & ExpiryDateYyyy = 2017 & SecurityCode = 111 & Номер выпуска = 1 & X-Requested-С = XMLHttpRequest

Стандартная форма (Правильное поведение), где поля кредитных карт отображаются в главном окне с полями, такими как:

@Html.TextBoxFor(x => x.CreditCard.IssueNumber, new {@maxlength = 3, @size = 3}) 

сообщение строки:

PayOption = 1 & CreditCardInfo.CreditCardNumberPlainText = 0000000000000000 & CreditCardInfo.StartDateMm = 02 & CreditCardInfo.StartDateYyyy = 2009 & CreditCardInfo.ExpiryDateMm = 04 & CreditCardInfo.ExpiryDateYyyy = 2014 & CreditCardInfo.SecurityCode = 111 & CreditCardInfo.IssueNumber = 1 & X-Requested-With = XMLHttpRequest

ответ

4

Почему бы не сделать EditorTemplate для этого CreditCard класса, то просто использовать его в родительское представление

EG

EditorTemplate: CreditCard.cshtml в EditorTemplates папке в папке Shared добавить в этом файле в поле редактирования для Creditcard. Что-то вроде этого:

@Html.EditorFor(x => x.IssueNumber) 
//........... So on. 

затем на ваш взгляд просто позвонить:

@Html.EditorFor(x => x.CreditCard) 
+1

Спасибо, любовь простой ответ. Раньше видел EditorFor helper, но не совсем понял прецедент. Нашел хорошее руководство здесь: http://coding-in.net/asp-net-mvc-3-how-to-use-editortemplates/ – gb2d

+0

Пожелайте, чтобы я понял, как это создало бы разные атрибуты имени формы, поэтому привязка будет работать на сервер ... – dudeNumber4

 Смежные вопросы

  • Нет связанных вопросов^_^