आप इसके लिए संपादक टेम्पलेट्स का उपयोग कर सकते हैं। नीचे दिया गया उदाहरण सामान्य फॉर्म पोस्टिंग उदाहरण दिखाता है। यदि आपको serialize
विधि और फ़ॉर्म मानों का उपयोग करके आवश्यकता है तो आप इसे अजाधित कर सकते हैं।
मान लीजिए कि आपको पाठ्यक्रम के लिए छात्र नामों की सूची संपादित करने की आवश्यकता है। तो चलो कि
public class Course
{
public int ID { set;get;}
public string CourseName { set;get;}
public List<Student> Students { set;get;}
public Course()
{
Students=new List<Student>();
}
}
public class Student
{
public int ID { set;get;}
public string FirstName { set;get;}
}
के लिए कुछ ViewModels बनाने अब आप अपने GET
कार्रवाई विधि में, आप हमारे विचार मॉडल की एक वस्तु बनाने के लिए, Students
संग्रह प्रारंभ और हमारे दृढ़ता से टाइप किया दृश्य के लिए भेज दें।
public ActionResult StudentList()
{
Course courseVM=new Course();
courseVM.CourseName="Some course from your DB here";
//Hard coded for demo. You may replace this with DB data.
courseVM.Students.Add(new Student { ID=1, FirstName="Jon" });
courseVM.Students.Add(new Student { ID=2, FirstName="Scott" });
return View(courseVM);
}
अब एक फ़ोल्डर EditorTemplatesतहत दृश्य/YourControllerName बुलाया बनाएँ। तब सामग्री
नीचे
@model Student
@{
Layout = null;
}
<tr>
<td>
@Html.HiddenFor(x => x.ID)
@Html.TextBoxFor(x => x.FirstName) </td>
</tr>
अब हमारी मुख्य दृश्य (StudentList.cshtml), इस दृश्य को लाने के लिए उपयोग EditorTemplate एचटीएमएल सहायक विधि के साथ कि कहा जाता Student.cshtml
के तहत एक नया दृश्य बनाना होगा।
@model Course
<h2>@Model.CourseName</h2>
@using(Html.BeginForm())
{
<table>
@Html.EditorFor(x=>x.Students)
</table>
<input type="submit" id="btnSave" />
}
यह तालिका पंक्ति में निहित टेक्स्ट बॉक्स में आपके प्रत्येक छात्र नाम के साथ सभी यूआई लाएगा। अब जब फॉर्म पोस्ट किया गया है, तो एमवीसी मॉडल बाइंडिंग में हमारे व्यूमोडेल की Students
संपत्ति में सभी टेक्स्ट बॉक्स मान होंगे।
[HttpPost]
public ActionResult StudentList(Course model)
{
//check for model.Students collection for each student name.
//Save and redirect. (PRG pattern)
}
आप इस Ajaxify करना चाहते हैं, तो आप सबमिट बटन पर क्लिक के लिए, प्रपत्र प्राप्त एक ही पोस्ट कार्रवाई विधि को भेजने सुनने और यह क्रमानुसार कर सकते हैं और Ajaxified समाधान। सहेजने के बाद पुनर्निर्देशित करने के बजाय, आप कुछ JSON वापस कर सकते हैं जो ऑपरेशन की स्थिति को इंगित करता है।
$(function(){
$("#btnSave").click(function(e){
e.preventDefault(); //prevent default form submit behaviour
$.post("@Url.Action("StudentList",YourcontrollerName")",
$(this).closest("form").serialize(),function(response){
//do something with the response from the action method
});
});
});
क्या आप अपडेट भेजने के लिए पोस्टबैक या AJAX मॉडल ढूंढ रहे हैं? – Heather
मुझे लगता है कि मैं अभी सबसे सरल खोज रहा हूं ... क्योंकि मैं सिर्फ एमवीसी 4 सीख रहा हूं। मान लीजिए कि पोस्टबैक होगा। लेकिन मैं या तो मॉडल के साथ काम कर सकता हूं। धन्यवाद – dan27