(не мог придумать лучшего названия, извините)
Итак, у меня есть страница макета, на этой странице есть панель поиска + опции. Выбор чего-либо, должен привести вас на страницу поиска, с результатами и т. Д. Довольно стандартно. Чтобы я работал, я создал класс MasterModel
с членом класса SearchDataModel
. SearchDataModel
содержит различные параметры для поиска (поисковый запрос, какие поля для поиска и т. Д.).
Затем я строго ввел свою страницу макета в класс MasterModel
и, используя Html.BeginForm...
, создал для него форму поиска. Однако все флажки, относящиеся к полям, по умолчанию не отмечены, даже если для всех полей установлено значение по умолчанию (через частную настройку получения / установки).
Тем не менее, когда я отправляю форму в SearchController, все флажки устанавливаются в true. Так что я немного озадачен тем, почему он знает, что они должны быть правдой, но не устанавливать флажки для проверки?
Размещение точек останова в ключевых местах, кажется, показывает, что модель не изолирована на запросах get, только сообщение в контроллер поиска?
Возможно, я все делаю неправильно, поэтому, если это так, указатели правильного пути всегда приветствуются.
public class MasterModel {
public SearchDataModel SearchModel { get; set; }
}
public class SearchDataModel{
private bool _OnTags = true;
private bool _OnManufacturers = true;
private bool _OnCountries = true;
[Display(Name= "Tags")]
public bool OnTags {
get { return _OnTags; }
set { _OnTags = value; }
}
[Display(Name= "Manufacturers")]
public bool OnManufacturers {
get { return _OnManufacturers; }
set { _OnManufacturers = value; }
}
[Display(Name= "Countries")]
public bool OnCountries {
get { return _OnCountries; }
set { _OnCountries = value; }
}
[Required]
[Display(Name="Search Term:")]
public string SearchTerm { get; set; }
}
Затем на странице _layout:
@Html.CheckBoxFor(m => m.SearchModel.OnTags, new { @class="ddlCheckbox", @id="inpCheckboxTag" })
@Html.LabelFor(m =>m.SearchModel.OnTags)