MVC3-Passing-Modell, Controller - Eingang Null-Werte
Ich begann mit MVC3 ein paar Wochen alt und jung in der Programmierung Leiter, ich Lerne noch einiges. Ich habe seit kurzem das arbeiten mit Modellen, mit TextBoxFor und andere Helfer zum Auffüllen Eigenschaften für mein "Charakter" - Modell.
Im wesentlichen das, was ich versuche zu tun, ist die Definition eines Modells und dann übergeben es an meinem controller, aber jede Eigenschaft, die ich definiert haben, als ein statischer Wert in meinem Modell übergeben wird als null-Wert zur Laufzeit.
Unten sind einige Ausschnitte der Teile benötigt, um zu verstehen, was Los ist..
Character.cs - Model
//Instances of manipulated objects.
otReal db = new otReal();
public player newPlayer = new player();
public byte[] conditions
{
get
{
return newPlayer.conditions;
}
set
{
byte[] array1 = null;
array1 = new byte[16 * 12 * 3];
newPlayer.conditions = array1;
}
}
CharacterController.cs
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Submit(Character c)
{
//Add a new character to the database via LINQ to Entities.
otReal.AddToplayers(c.newPlayer);
otReal.players.AddObject(c.newPlayer);
otReal.SaveChanges();
return View();
}
Nur Helfer, ich habe in meiner Ansicht sind diejenigen, die der Anwender tatsächlich benötigt, um die Interaktion mit. Wenn ich in meinem controller, und setzen Sie die Werte dort sind, bekommen Sie auf den korrekten Wert gesetzt, und es wird legen. Jede Hilfe wäre sehr geschätzt werden!
Index.cshtml - View
@using (Ajax.BeginForm("Submit", new AjaxOptions { OnComplete = "done" }))
{
@Html.ValidationSummary(true)
<fieldset>
<legend>New Character Information</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Name, "Character Name")
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.TownList)
</div>
<div class="editor-field">
@* @Html.DropDownList("TownList", ViewData["TownList"] as SelectList)*@
@Html.DropDownListFor(model => model.TownList, ViewData["TownList"] as SelectList)
@Html.ValidationMessageFor(model => model.TownList)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Sex)
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.Sex, ViewData["sex"] as SelectList)
@Html.ValidationMessageFor(model => model.Sex)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Vocation)
</div>
<div class="editor-field">
@Html.DropDownList("VocList", ViewData["VocList"] as SelectList)
@Html.ValidationMessageFor(model => model.Vocation)
</div>
<p>
<input id="button" type="submit" value="Create" />
</p>
<div style="font-family: Tahoma; font-size: large" id="completeDiv" style="display: none;">
</div>
<span></span>
</fieldset>
}
Im Grunde, was ich versuche zu tun, hier ist mein Modell, dass hat eine Reihe von Basis-Werte, die jedes 'Zeichen' wird in der Datenbank-Tabelle. Auf diese Weise, wenn ein Spieler schafft sich sein/Ihr Charakter, den er/Sie in der Lage, geben Sie ein Zeichen ein Name, Geschlecht, Klasse(Berufung), die Ausgehend von der Stadt und alle anderen Werte werden aufgefüllt, die hinter den kulissen und an den controller für die Schöpfung.
Können Sie liefern etwas mehr Informationen, was genau wollen Sie tun, welche Fehler sind Sie immer und auf welcher Zeile der code bedeutet, dass Fehler auftreten?
Die Fehlermeldung, die ich bekomme ist, dass die "Bedingungen" darf nicht null sein, weil es eine NICHT NULLWERTFÄHIGE Spalte in SQL. Aber die obige Eigenschaft, die Sie sehen, ist die Basis-setup für jede Eigenschaft, die ich habe ich ziemlich viel entweder statisch oder legen Sie es auf einem "Wert" übergeben wird, aus der Ansicht.
InformationsquelleAutor jhartzell | 2011-04-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Angenommen, Sie versuchen, Werte auf 'newPlayer', dann ersetzen Sie diese
mit diesem
Dem Standard-Modell von binder wird alles von der form auf den post-back-es gibt keine Notwendigkeit zum instanziieren des Modells.
Ah, ich glaube, ich verstehe dein problem jetzt. Ich würde empfehlen eine separate view-model für die Teile der Daten, die der Benutzer Bearbeiten kann, und dann kombinieren Sie dies mit freigegebenen Daten, bevor Sie weiterhin in der Datenbank. Sie am Ende mit mehr Klassen, aber im langen run es hält die Dinge sauberer. Hier noch weitere Informationen auf dem Ansatz. Viel Glück.
Ja, ich werde wohl mit diesem Ansatz. Als temporäre Lösung, nur um zu testen, mehr mit MVC-ich habe einfach das setup der Charakter mit einem Konstruktor, setzt alle diese Werte auf Objekt erstellen.
InformationsquelleAutor ataddeini
Erstellt einen Konstruktor für mein Modell und innerhalb des Konstruktors ich die Standard-Werte über die neu instanziierte player-Modell. Temp-fix bis ich Las in ataddeini Lösung. Vielen Dank an alle!
InformationsquelleAutor jhartzell