Frage

Ich habe folgende Struktur:

public class Dummy
{
    public string Name { get; set; }

    public InnerDummy Dum { get; set; }
}

public class InnerDummy
{
    public string Name { get; set; }
}

Und ein ActionResult das erhält a Dummy

[HttpPost]
public ActionResult Index(Dummy dum)
{
    var dsad = dum;
    //var dwss = idum;

    return RedirectToAction("index");
}

Aus meiner Sicht habe ich:

@model TestMVC3Razor.Controllers.HomeController.Dummy
@using (Html.BeginForm())
{
    @Html.TextBoxFor(o => o.Name)
    @Html.EditorFor(o => o.Dum)

    <br />
    <br />
    <input type="submit" />
}

Es wird gepostet

Name=xxx
Dum.Name=yyy

Aber wenn ich versuche zu bekommen dum.Dum.Name auf der ActionResult Ich bekomme null anstatt yyy.Ist das ein Bug oder einfach so?Benutze ich es nicht richtig?Muss ich dafür einen neuen Ordner implementieren?

War es hilfreich?

Lösung

HI~ Ihre Ansicht sollte verwenden @Html.EditorFor(o => o.Dum.Name)

nicht @Html.EditorFor(o => o.Dum)

Und Postback-Controller:

[HttpPost]
public ActionResult Index(Dummy postback)
{
    var dsad = postback;
    var a = postback.Name;        //get Name of Dummy
    var b = postback.Dum.Name;    //get Name of InnerDummy of Dummy

    return RedirectToAction("index");
}

Wenn Sie Probleme damit haben, lassen Sie es mich bitte wissen :)

Andere Tipps

Sie müssen das ziehen InnerDummy aus dem Inneren heraus Dummy Klasse.

Wenn der Standardmodellbinder das findet Dum Eigenschaft wird versucht, ein Objekt vom Typ zu erstellen InnerDummy, aber in seinem Kontext existiert das nicht.Referenzieren InnerDummy So wie Sie es haben, müsste der Modellordner eine erstellen Dummy.InnerDummy, aber es hat keine Möglichkeit, das zu wissen.

Herstellung InnerDummy Ein direktes Mitglied des Namespace wird das Problem beheben.

Eventuell lässt sich das Problem auch durch eine Deklaration beheben Dum als:

public Dummy.InnerDummy Dum { get; set; }

Allerdings bin ich mir da nicht sicher.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top