سؤال

لدي هذا الهيكل التالي:

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

    public InnerDummy Dum { get; set; }
}

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

و ActionResult الذي يتلقى أ Dummy

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

    return RedirectToAction("index");
}

من وجهة نظري لدي:

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

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

هو نشر

Name=xxx
Dum.Name=yyy

ولكن عندما أحاول الحصول على dum.Dum.Name على ال ActionResult أحصل على null بدلا من yyy.هل هذا خطأ أو مجرد وسيلة هو?أنا لا تستخدم ذلك الحق?هل أنا بحاجة إلى تنفيذ الموثق الجديد لهذا?

هل كانت مفيدة؟

المحلول

مرحبا~ يجب استخدام وجهة نظرك @Html.EditorFor(o => o.Dum.Name)

لا @Html.EditorFor(o => o.Dum)

و بوستباك تحكم:

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

إذا كان لديك مشاكل حول هذا الموضوع ، واسمحوا لي أن أعرف :)

نصائح أخرى

تحتاج إلى سحب InnerDummy من داخل Dummy صف دراسي.

عندما يجد الموثق النموذج الافتراضي Dum خاصية سيحاول إنشاء كائن من النوع InnerDummy, ، ولكن في سياقها هذا غير موجود.إلى مرجع InnerDummy كما لديك الموثق نموذج سوف تحتاج إلى إنشاء Dummy.InnerDummy, ، ولكن ليس لديها طريقة لمعرفة ذلك.

صنع InnerDummy سيقوم عضو مباشر في مساحة الاسم بإصلاح المشكلة.

قد يكون من الممكن أيضا حل المشكلة عن طريق الإعلان Dum كما:

public Dummy.InnerDummy Dum { get; set; }

لست متأكدا من هذا, على أية حال.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top