после прочтения подобных сообщений и попыток она все равно не работает.
Person.cshtml
Код: Выделить всё
@model SampleApp.Web.ViewModel.PersonViewModel
@{
ViewBag.Title = "Welcome";
}
Welcome to example page.
//Post data works as expected, controllers create method write to db successfully
@using (Html.BeginForm("Create", "Person", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
Personen
@* @Html.LabelFor(model => model.Name)
@Html.EditorFor(model => model.Age)
@Html.ValidationMessageFor(model => model.Age)
@Html.LabelFor(model => model.Surrname)
}
//binding to Model fails, Model is null. Not be able to debug anything in controller action, it stops when "loading" the page
@using (Html.BeginForm("GetListBoxData", "Person"))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
@Html.ListBoxFor(model => model.ListboxData, Model.ListboxData);
}
Код: Выделить всё
[AcceptVerbs(HttpVerbs.Get)]
[ValidateAntiForgeryToken]
public ActionResult GetListBoxData()
{
var data = new List
();
data.Add(new PersonViewModel{Name = "Test", Surrname="testsurrname", Age=30});
var viewModel = new PersonViewModel()
{
ListboxData = data.AsEnumerable().Select(s=> new SelectListItem{Value=s.Name ,Text = s.Surrname}),
};
return View(viewModel);
}
[AcceptVerbs(HttpVerbs.Post)]
[ValidateAntiForgeryToken]
public ActionResult GetListBoxData(PersonViewModel persondata)
{
//TODO: handle values from View
return View(this);
}
[ValidateAntiForgeryToken]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create([Bind(Include = "Name, Surrname, Age")] PersonViewModel persondata)
{
try
{
PersonService personDataProvider = new PersonService();
personDataProvider.SavePerson(persondata);
return new RedirectResult("SomewhereToGo");
}
catch (DataException ex)
{
//TODO: Log
}
return View(this);
}
Код: Выделить всё
public class PersonViewModel
{
public int PersonId{ get; set; }
public int Age { get; set; }
public string Name { get; set; }
public string Surrname { get; set; }
public IEnumerable ListboxData { get; set; }
}
после добавления его в мой html он должен быть заполнен из базы данных при загрузке страницы, но я получаю исключение ReferenceNotSet при загрузке страницы. Model.ListboxData имеет значение null до вызова действия GetListBoxData.
Большое спасибо за помощь!
Подробнее здесь: https://stackoverflow.com/questions/184 ... el-is-null