Mvc 4-Modell ist nullC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Mvc 4-Modell ist null

Post by Anonymous »

Ich verwende die Listbox von Razor zum ersten Mal, aber mein Modell ist immer null.
Nachdem ich ähnliche Beiträge gelesen und ausprobiert habe, funktioniert es immer noch nicht.

Person.cshtml

Code: Select all

@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);
}


PersonController.cs

Code: Select all

[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);
}
PersonViewModel

Code: Select all

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; }
}
Das Schreiben von Werten von editFor in db funktioniert wie erwartet ohne Code für listboxfor.
Nachdem ich es zu meinem HTML hinzugefügt habe, sollte es beim Laden der Seite aus der Datenbank gefüllt werden, aber ich erhalte beim Laden der Seite eine ReferenceNotSet-Ausnahme. Model.ListboxData ist null, bevor die GetListBoxData-Aktion aufgerufen wird.

Vielen Dank für Ihre Hilfe!

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post