Arbeiten an meinem ersten MVC ASP.NET-Projekt. Ich frage mich, wie ich das Modell mit den Eingaben des Benutzers aktualisieren kann.Aktualisieren Modell von anzeigen
Sagen wir, ich habe ein Modell PersonModel.cs
public class PersonModel
{
int personID;
string firstName;
string lastName;
string favoriteColor;
public PersonModel(int personID){
this.PersonID=personID;
//..Fetching data from DB to fill firstName and lastName using personID
//At this point, personID,firstName and lastName are set, only the favoriteColor is missing
}
}
Jetzt ist mein Controller:
public class PersonController : Controller
{
public ActionResult Index() {
PersonModel person = new PersonModel(this.UserId());
return View(person);
}
Meiner Ansicht:
@using Portail.Models
@model PersonModel
@ViewBag.Title = "Welcome page"
<h2> Hello @Model.firstName @Model.lastName </h2>
Für jetzt ist es gut funktioniert, zeigt die Vor- und Nachnamen des Benutzers, entsprechend den Werten im DB.
Ich möchte, dass der Benutzer eine Farbe in einer Liste auswählt und dann diese Farbe als favoriteColor-Variable im Modell festlegt, und dann die DB mit diesem aktualisieren. Zum Beispiel durch eine Dropdown-Liste hinzufügen:
<select>
<option value="red">Red</option>
<option value="blue">Blue</option>
<option value="green">Green</option>
<option value="yellow">Yellow</option>
</select>
Wie kann ich mein Modell aktualisieren, indem Sie die gewählte Farbe für favorite Einstellung?
Beachten Sie, dass dies nur ein Beispiel ist, für das Projekt, an dem ich arbeite, muss ich ein paar Variablen aktualisieren, nicht nur eine, wie es hier der Fall ist. Außerdem handelt es sich um vertrauliche Daten, daher möchte ich in der URL nichts weitergeben.
Danke! Es funktionierte zunächst nicht, die favoriteColor war null für das Modellobjekt, aber sobald ich {get; set} (öffentliche Zeichenkette favoriteColor {get; set;}) in PersonModel.cs hat es funktioniert :) –
Gut zu wissen, dass Sie es herausgefunden haben :), der Schlüssel ist das name-Attribut der Eingabe-Tags muss mit dem Eigenschaftsnamen des Modells übereinstimmen. Mit 'Html.TextBoxFor',' Html.HiddenFor' und 'Html.DropDownListFor' wird sichergestellt, dass sie immer gleich sind, falls der Eigenschaftsname im Modell geändert wird. – ekad