سؤال

[لقد حللت هذا نفسي ، انظر جوابي عن سبب]

أواجه مشكلة في الحصول على شكل قيم IList<> حجة في طريقة تحكم تعيين بشكل صحيح.

بلدي تحكم الطبقة يبدو مثل هذا:

public class ShoppingBasketController : Controller {

    public ActionResult Index() {
        return View();
    }

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Add(IList<ShoppingBasketItem> items) {
        Session["basket"] = items; // for testing
        return RedirectToAction("Index");
    }
}
public class ShoppingBasketItem {
     public int ItemID;
     public int ItemQuantity;
}

قليلا قلص شكل:

<% using (Html.BeginForm("Add", "ShoppingBasket")) { %>
    <% int codeIndex = 0;
    foreach (Product product in products) { %>
        <%= Html.Hidden("items[" + codeIndex + "].ItemID", product.Id) %>
        <%= Html.TextBox("items[" + codeIndex + "].ItemQuantity", "0", new { size = "2"}) %>
        <% codeIndex++;
    }
} %>

التي تنتج العلامات مثل:

<form action="/Basket/Add" method="post">
    <input id="items[0]_ItemID" name="items[0].ItemID" type="hidden" value="1" />
    <input id="items[0]_ItemQuantity" name="items[0].ItemQuantity" size="2" type="text" value="0" />

    <input id="items[1]_ItemID" name="items[1].ItemID" type="hidden" value="2" />
    <input id="items[1]_ItemQuantity" name="items[2].ItemQuantity" size="2" type="text" value="0" />

    <input id="items[2]_ItemID" name="items[2].ItemID" type="hidden" value="3" />
    <input id="items[2]_ItemQuantity" name="items[2].ItemQuantity" size="2" type="text" value="0" />
</form>

لقد تحققت شكل القيم التي قدمت من أنها صحيحة.العدد الصحيح من ShoppingBasketItems أيضا الحصول على وضعت في Session["basket"] ومع ذلك كل ItemID و ItemQuantity كل صفر.يبدو أن بشكل صحيح فك قائمة تشكيل القيم ، ولكن ليس التقاط خصائص أنفسهم.

أنا باستخدام MVC RC2 ، على أساس المادة سكوت Hanselman أنا متأكد من قانون بلدي هو الصحيح.أنا في عداد المفقودين شيئا ؟

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

المحلول

الحل

بعد تحميل MVC المصدر ما زلت لا أرى لماذا لا تعمل لذا يفترض أن يكون أن تفعل شيئا مع نوع كنت تحاول ربط.من المؤكد أن قيم المتغيرات عضو مقابل خصائص كان الجاني.وذلك لأن نموذج الموثق يستخدم التفكير إلى مجموعة الخصائص التي لم تكن الحقائق من خلال الدعوة إلى TypeDescriptor.GetProperties(Type).

تحديث قيمة الدرجة إلى هذا حلها (بعد ساعات من ضرب رأسك الجدار وأود أن أضيف!!):

public class ShoppingBasketItem {
    public int ItemID { get; set; }
    public int ItemQuantity { get; set; }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top