نموذج افتراضي لا يعمل بشكل صحيح
-
12-11-2019 - |
سؤال
لدي هذا الهيكل التالي:
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; }
لست متأكدا من هذا, على أية حال.