У меня есть приложение, написанное с использованием C#
поверх ASP.NET Core 5.0.
У меня есть следующая модель представления
public class TestVM
{
public Name { get; set; }
public MenuViewModel<string> State { get; set;}
public TestVM()
{
State = MenuViewModel<string>();
}
}
Вот урезанная версия моего MenuViewModel
public class MenuViewModel
{
[BindNever]
public IEnumerable<SelectListItem> Items { get; set; }
}
public class MenuViewModel<T> : MenuViewModel
{
public T Value { get; set; }
}
Проблема в том, что когда приходит почтовый запрос, viewModel.State.Value
имеет значение null. Когда я оцениваю Request.Form
, я вижу ключ State.Value
с правильным значением CA
Вот урезанный мой метод действия в контроллере.
[HttpPost, ValidateAntiForgeryToken]
public IActionResult Store(TestVM viewModel)
{
if(ModelState.IsValid)
{
// do some
}
return View(viewModel);
}
Как правильно привязать данные формы из запроса к свойству State.Value
?
Обновлено. Я создал шаблон редактора, позволяющий отображать MenuVieModel. ~/Views/Shared/EditorTemplates/MenuViewModel.cshtml
содержит следующий код
@model dynamic
@{
if (!(Model is MenuViewModel m))
{
return;
}
dynamic obj = new System.Dynamic.ExpandoObject();
obj.Class = "form-control";
if (Html.ViewData.ModelMetadata.IsRequired)
{
obj.Required = true;
}
}
@Html.DropDownList("Value", m.Options, Html.ViewData.ModelMetadata.Placeholder, obj)
m.Options
в представлении бритвы? Когда я копирую ваш код, он выдает ошибку:'MenuViewModel' does not contain a definition for 'Options' and no accessible extension method 'Options' accepting a first argument of type 'MenuViewModel' could be found (are you missing a using directive or an assembly reference?)
. Содержит ли ваша MenuViewModel свойство Options? - person Rena   schedule 08.12.2020