2015-08-27 5 views
5

मेरे पास एक ऐसा दृश्य है जो एक बॉक्स प्रारूप में एक बूलियन (वर्तमान में 0 से डिफॉल्ट) प्रदर्शित करता है कि मैं सत्य के रूप में सक्रिय करने की जांच नहीं कर सकता हूं और यह भी चाहता हूं नियंत्रक पर वापस जाने के लिए परिणाम फ़ील्ड में टेक्स्ट दर्ज करें और दोनों तालिकाओं को एक तालिका में सहेजें। क्या कोई यह बता सकता है कि कृपया इस कार्यक्षमता को काम करने की अनुमति देने के लिए मुझे क्या करना है।बुलियन सक्षम करें और दृश्य में टेक्स्ट दर्ज करें, फिर नियंत्रक को वापस पास करें - एमवीसी

enter image description here

नियंत्रक कोड

public ActionResult P1A1Mark() 
    { 
     List<MarkModel> query = (from row in db.submits 
            where row.assignment_no.Equals("1") && row.group_no == 1 
            group row by new { row.assignment_no, row.student_no, row.student.firstname, row.student.surname } into g 
            select new MarkModel 
            { 
             student_no = g.Key.student_no, 
             student_surname = g.Key.surname, 
             student_firstname = g.Key.firstname 

            } 
             ).ToList(); 

     return View(query); 
    } 

देखें

@model IEnumerable<MvcApplication2.Models.MarkModel> 

@{ 
    ViewBag.Title = "P1A1Mark"; 
} 

<h2>Mark Student Assignments</h2> 

<table> 
    <tr> 
     <th> 
      @Html.DisplayNameFor(model => model.student_no) 
     </th> 
     <th> 
      @Html.DisplayNameFor(model => model.student_surname) 
     </th> 
     <th> 
      @Html.DisplayNameFor(model => model.student_firstname) 
     </th> 
     <th> 
      @Html.DisplayNameFor(model => model.submitted) 
     </th> 
     <th> 
      @Html.DisplayNameFor(model => model.result) 
     </th> 

     <th></th> 
    </tr> 

@foreach (var item in Model) { 
    <tr> 
     <td> 
      @Html.DisplayFor(modelItem => item.student_no) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.student_surname) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.student_firstname) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.submitted) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.result) 
     </td> 

    </tr> 
} 

</table> 

मॉडल

public class MarkModel 
{ 
    public string student_no { get; set; } 
    public string student_surname { get; set; } 
    public string student_firstname { get; set; } 
    public string assignment_no { get; set; } 
    public bool submitted { get; set; } 
    public string result { get; set; } 
    public Nullable<int> group_no { get; set; } 
} 
+0

'@ Html.DisplayFor (modelItem => item.result) -> @ Html.TextBoxFor (मद => item.result)' – Igor

+0

धन्यवाद @Igor, क्या बूलियन के साथ क्या करना पर किसी भी विचार? – cg91

+0

मुझे लगता है कि आप एक साधारण उत्तर के लिए बहुत दूर हैं .. भले ही आप बॉक्स को चेक कर सकें और परिणाम दर्ज कर सकें, आपको अधिकांश दृश्यों को फिर से लिखना होगा और सभी नियंत्रक कोड लिखना होगा। ऑब्जेक्ट्स की सूची को संपादित करने के कई उदाहरण हैं, आप 'सूची संपादित करें एमवीसी' खोजना चाहते हैं और – JamieD77

उत्तर

1

के प्रकार के लिए एक EditorTemplate बनाएं।

/Views/Shared/EditorTemplates/MarkModel.cshtml

@model MvcApplication2.Models.MarkModel 
<tr> 
    <td>@Html.DisplayFor(m => m.student_no)</td> 
    <td>@Html.DisplayFor(m => m.student_surname)</td> 
    <td>@Html.DisplayFor(m => m.student_firstname)</td> 
    <td>@Html.CheckBoxFor(m => m.submitted)</td> 
    <td>@Html.TextBoxFor(m => m.result)</td> 
</tr> 

में और मुख्य दृश्य

@model IEnumerable<MvcApplication2.Models.MarkModel> 
@using (Html.BeginForm()) 
{ 
    <table> 
    <thead> 
     // add your th elements 
    </thead> 
    <tbody> 
     @Html.EditorFor(m => m) 
    <tbody> 
    </table> 
    <input type="submit" ../> 
} 

में और

[HttpPost] 
public ActionResult P1A1Mark(IEnumerable<MarkModel>model) 

वापस करने के लिए पोस्ट करने के लिए एक विधि बनाने वैकल्पिक रूप से आप ध्यान में रखते हुए एक for पाश का उपयोग कर सकते (मॉडल IList<T> होना चाहिए)

for(int i = 0; i < Model.Count; i++) 
{ 
    .... 
    @Html.CheckBoxFor(m => m[i].submitted) 
} 
संबंधित मुद्दे