1
我有一個視圖,該視圖的模型中包含我構建爲複選框值的項目列表。我怎樣才能將這些值發回模型的動作?問題在於沒有具體數量的複選框,有時他們不知道該值是多少。可能有2個,也可能有15個,具體取決於用戶。但是從模型的列表值構建而成。在此先感謝如何將非模型字段發送回操作窗體視圖
我有一個視圖,該視圖的模型中包含我構建爲複選框值的項目列表。我怎樣才能將這些值發回模型的動作?問題在於沒有具體數量的複選框,有時他們不知道該值是多少。可能有2個,也可能有15個,具體取決於用戶。但是從模型的列表值構建而成。在此先感謝如何將非模型字段發送回操作窗體視圖
您可以使用編輯器模板。
假設你的視圖/頁面是爲學生分配課程。所以,你有這樣的
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
)相同的名稱在那裏創建一個新視圖。
現在這個新的文件中,其中是強類型我們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");
}
你能後的代碼展示你是如何產生的複選框?另外,說明你的模型看起來像什麼的一些代碼會很有幫助。 –
使用編輯器模板。這個答案將幫助你http://stackoverflow.com/a/12073450/40521 – Shyju