ฉันกำลังสร้างแอปขนาดเล็กเพื่อสอนตัวเอง ASP.NET MVC และ JQuery และหนึ่งในหน้าคือรายการที่สามารถเลือกได้บางรายการ จากนั้นฉันต้องการกดปุ่มและส่งรายการ (หรือสิ่งที่เทียบเท่า) ไปยังคอนโทรลเลอร์ของฉันที่มีรหัสของรายการที่เลือกโดยใช้ฟังก์ชั่นโพสต์ของ JQuery
ฉันจัดการเพื่อรับอาร์เรย์ที่มีรหัสขององค์ประกอบที่ถูกเลือกและตอนนี้ฉันต้องการโพสต์นั้น วิธีหนึ่งที่ฉันสามารถทำได้คือมีรูปแบบจำลองในหน้าของฉันพร้อมค่าที่ซ่อนอยู่จากนั้นตั้งค่าที่ซ่อนอยู่กับรายการที่เลือกและโพสต์แบบฟอร์มนั้น แม้ว่ามันจะดูสกปรก
มีวิธีที่สะอาดกว่านี้ในการทำสิ่งนี้โดยการส่งอาร์เรย์ไปยังคอนโทรลเลอร์โดยตรงหรือไม่? ฉันลองทำสิ่งต่าง ๆ เล็กน้อย แต่ดูเหมือนว่าคอนโทรลเลอร์ไม่สามารถแมปข้อมูลที่รับได้ นี่คือรหัสจนถึง:
function generateList(selectedValues) {
var s = {
values: selectedValues //selectedValues is an array of string
};
$.post("/Home/GenerateList", $.toJSON(s), function() { alert("back") }, "json");
}
จากนั้นผู้ควบคุมของฉันก็จะมีลักษณะเช่นนี้
public ActionResult GenerateList(List<string> values)
{
//do something
}
สิ่งที่ฉันได้รับคือ "null" ในพารามิเตอร์คอนโทรลเลอร์ ...
เคล็ดลับใด ๆ
Request["values[]"]