У меня есть класс модель и класс viewmodel на линиях, аналогичных классу модели (код приведен ниже) в приложении MVC.Существует представление, модель которого - viewmodel и его форма.Соответствующий метод действия для этой кнопки отправки формы имеет параметр действия в качестве класса viewmodel.С учетом этого сценария связывание модели работает нормально.Теперь, если я изменю тип данных метода Action с «viewmodel» на класс «Model», привязка Model не будет работать правильно, и правильные данные не будут получены на стороне сервера.Ниже приведены классы моделей -
public class Model
{
public int A { get; set; }
}
public class ViewModel
{
public Model Model { get; set; }
}
Просмотреть код файла ниже:
@model ViewModel
@{
ViewBag.Title = "Test";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Create</h2>
@using (Html.BeginForm("A", "Customers"))
{
<div class="form-group">
@Html.LabelFor(m => m.Model.A)
@Html.TextBoxFor(m => m.Model.A, new { @class="form-control" })
</div>
<button type="submit" class="btn btn-primary">Save</button>
}
Метод действия контроллера: При правильном поведении привязки модели -
public ActionResult A(ViewModel model)
{
return Content("Value of A is " + model.Model.A);
}
Еслия изменяю параметр действия на класс модели, поведение привязки модели не происходит.Ниже приведен код -
public ActionResult A(Model model)
{
return Content("Value of A is " + model.A);
}
Почему это так?
На стороне браузера данные формы имеют вид - Model.A - 1 Почему это значение не может быть привязано к параметру класса модели A во втором упомянутом случае?