ИМХО, есть лучший способ сделать это.
По сути, если у вас есть несколько моделей в модели представления, подпись контроллера поста будет содержать те же модели, в отличие от модели представления.
И.Е.
public class FooViewModel {
public Bar BarV { get; set; }
public Enquiry EnquiryV { get; set; }
public int ThisNumber { get; set; }
}
public class Bar {
public int BarId { get; set; }
}
public class Enquiry {
public int EnquiryId { get; set; }
public string Latitude { get; set; }
}
И действие post в контроллере будет выглядеть следующим образом.
[ActionName("Foo"), HttpPost]
public ActionResult Foo_post(
[Bind(Include = "EnquiryId")]
Enquiry EnquiryV,
[Bind(Include = "BarId"])]
Bar BarV,
int ThisNumber
{
return View(new FooViewModel { Bar = BarV, Enquiry = EnquiryV, ThisNumber = ThisNumber });
}
Все время, пока вид выглядит так
@using (Html.BeginForm()) {
@Html.TextBoxFor(m => m.EnquiryV.EnquiryId)
@Html.TextBoxFor(m => m.EnquiryV.Latitude)
@Html.TextBoxFor(m => m.BarV.BarId)
@Html.TextBoxFor(m => m.ThisNumber)
<input type="submit" value="push" />
}
Имейте в виду, что эта форма будет по-прежнему отправлять Локатор обратно (так, как вы его настроили), однако, поскольку она не включена в строку «Привязать включить» для запроса о действии публикации, действие не примет новое значение в результате запроса. Я бы посоветовал отключить широту или не использовать элемент формы, чтобы предотвратить дополнительные данные публикации.
В любом другом сценарии вы можете использовать связывание просто отлично, но по какой-то причине ему не нравятся точечные обозначения для сложных моделей.
В качестве примечания: я бы не стал ставить атрибут bind непосредственно на класс, так как это может вызвать другие проблемы, такие как репликация кода, и не учитывать некоторые сценарии, в которых может потребоваться другая привязка.
(Я изменил имена переменных для большей ясности. Я также знаю, что ваш вопрос довольно устарел, однако при поиске ответа сам это первый случай, на который я наткнулся, прежде чем пытаться найти собственное решение и перейти к тому, который я написал Я надеюсь, что это может помочь другим людям, которые ищут решение той же проблемы.)