Понимание вопроса:
1.) Класс "X_IndexViewModel"
public class X_IndexViewModel
{
public List<SelectListItem> CheckBox_1 { get; set; }
...
}
2.) XController.cs
public ActionResult Index()
{
X_IndexViewModel viewModel = new X_IndexViewModel
{
CheckBox_1 = new List<SelectListItem>()
{
new SelectListItem
{
Selected = true,
Text = "some text",
Value ="another text"
}
},
...
}
return View(viewModel);
}
3.) Индекс веб-сайта.aspx ", который наследует" X_IndexViewModel "
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<Test.ViewModels.X_IndexViewModel>" %>
...
<!-- rendering a checkbox -->
<% foreach (var item in Model.CheckBox_1) { %>
<%: Html.CheckBox("CheckBox_1", item.Selected, new {id="CheckBox_1"}) %>
<label for="CheckBox_1<%: item.Text %>"><%: item.Text %></label>
<% } %>
...
4)" Реальный "класс модели" XModel "содержит просто bool для хранения информации, выбрал ли пользователь флажок или нет ...
public class XModel
{
public bool CheckBox_1 {get; set;}
...
}
5) И в "XController.cs"
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(XModel model, FormCollection Form)
Меня удивляет, что аргумент model
метода POST ActionResult хорошо заполнен true
или false
дляcheckbox.
Что я не понял:
Я использую экземпляр класса X_IndexViewModel
(X_IndexViewModel viewModel = new X_IndexViewModel { ... }
), чтобы заполнить флажок некоторыми значениями (например, selected = true или falseи т. д.).
Затем отображается веб-сайт с использованием viewModel (где viewModel - это экземпляр класса X_IndexViewModel).Это прекрасно работает, потому что веб-сайт наследует X_IndexViwModel
.
Когда пользователь отправляет форму, это событие (событие post), выбираемое методом [AcceptVerbs(HttpVerbs.Post)]
ActionResult
И свойства класса XModel
заполняютсясо значением флажка.
Итак, мой вопрос:
Где происходит связывание между "X_IndexViewModel" и "XModel"?
Какой оператор говорит: Возвращенныйзначение X_IndexViewModel
CheckBox1
должно храниться в свойстве XModel
CheckBox1
?