2014-02-25 35 views
1

我有一個視圖,該視圖的模型中包含我構建爲複選框值的項目列表。我怎樣才能將這些值發回模型的動作?問題在於沒有具體數量的複選框,有時他們不知道該值是多少。可能有2個,也可能有15個,具體取決於用戶。但是從模型的列表值構建而成。在此先感謝如何將非模型字段發送回操作窗體視圖

+0

你能後的代碼展示你是如何產生的複選框?另外,說明你的模型看起來像什麼的一些代碼會很有幫助。 –

+0

使用編輯器模板。這個答案將幫助你http://stackoverflow.com/a/12073450/40521 – Shyju

回答

0

您可以使用編輯器模板

假設你的視圖/頁面是爲學生分配課程。所以,你有這樣的

public class AssignCourseVM 
{ 
    public int StudentID { set;get;} 
    public string StudentName { set;get;} 
    public List<CourseRegistration> Courses { set;get;} 
    public AssignCourseVM() 
    { 
    Courses =new List<CourseRegistration>(); 
    } 
} 
public class CourseRegistration 
{ 
    public int CourseID { set;get;} 
    public string CourseName { set;get;} 
    public bool IsRegistered { set;get;} 
} 

現在,在一個視圖模型您GET行動,您將創建視圖模型的對象,發送到視圖

public ActionResult Registration() 
{ 
    var vm = new AssignCourseVM(); 

    //Student Info is hard coded. You may get it from db 
    vm.StudentID = 1; 
    vm.StudentName = "Scott"; 
    vm.Courses = GetCourseRegistations(); 
    return View(vm); 
} 
public List<CourseRegistration> GetCourseRegistations() 
{ 
    var list = new List<CourseRegistration>(); 
    //Hard coded for demo. You may load this list from DB 
    list.Add(new CourseRegistration { CourseID = 1, CourseName = "EN" }); 
    list.Add(new CourseRegistration { CourseID = 2, CourseName = "GE" }); 
    return list; 
} 

現在,讓我們創建一個編輯模板,轉到View/YourControllerName並創建一個名爲EditorTemplates的文件夾,然後使用與該屬性類型(CourseRegistration.cshtml)相同的名稱在那裏創建一個新視圖。

enter image description here

現在這個新的文件中,其中是強類型我們AssignCourseVM類我們的主要觀點(Registration.cshtml)粘貼此內容

@model ReplaceYourProjectNameSpaceHere.ViewModels.CourseRegistration 
<div> 
    @Model.CourseName : @Html.CheckBoxFor(s=>s.IsRegistered) 
    @Html.HiddenFor(s => s.CourseID) 
</div> 

現在,我們將使用Html.EditorFor的輔助方法。

@model ReplaceYourProjectNameSpaceHere.ViewModels.AssignCourseVM 
<h2>Registration</h2> 
@using(Html.BeginForm()) 
{ 
    <h4>@Model.StudentName</h4> 
    @Html.EditorFor(s=>s.Courses) 
    @Html.HiddenFor(s=>s.StudentID) 
    <input type="submit" /> 
} 

現在,當用戶帖子的形式,你可以檢查張貼的視圖模型的過程屬性,看看哪些項目檢查與否。

[HttpPost] 
public ActionResult Registration(AssignCourseVM model) 
{ 
    //to do :save and redirect 
    return RedirectToAction("RegistrationSuccessfull"); 
} 

enter image description here

相關問題