Привязка модели к нескольким типам с одинаковыми именами свойств - PullRequest
3 голосов
/ 24 февраля 2010

У меня есть представление, которое содержит 2 списка: Аудитория и язык

Я пытаюсь отправить форму, которая содержит выбранный индекс обоих, на мой контроллер, у которого есть метод действия этой подписи:

public JsonResult Submit(Audience aud, Locale loc)
{
// do stuff
}

Проблема, с которой я столкнулся, заключается в том, что у Audience & Locale есть свойство ID, поэтому связыватель модели немного запутался, из-за чего можно назначать выбранные значения. Оба получают значение «1», когда аудитория должна иметь «2», а локаль должна иметь «1»

Вопрос в том, как заставить страницу различать две страницы при отправке? Мы попытались добавить значение идентификатора для Locale с помощью «locale.», Поэтому строка параметров, которая передается в качестве данных в контроллер, выглядит следующим образом "&locale.id=1&audience.id=2" но это не похоже на работу.

Есть предложения? Если потребуется дополнительная информация, я ее предоставлю.

Спасибо

Dave

Ответы [ 2 ]

3 голосов
/ 24 февраля 2010

Использование:

public JsonResult Submit([Bind(Prefix = "audience")]Audience aud,[Bind(Prefix = "locale")]Locale loc)
{
// do stuff
}

Каждое поле Аудитория должно иметь префикс «аудитория» в имени в поле html: audi.id, Audience.name, ...

<input id="audience_name" name="audience.Name" type="text" value="" />
2 голосов
/ 24 февраля 2010

У вас должен быть определенный ViewModel для ввода данных в ваше действие отправки. Этот объект должен иметь AudienceId и LocaleId. Когда вы создаете выпадающие списки, вы должны создавать их с именами, которые соответствуют вашим ожиданиям.

...