asp mvc部分与模型和ViewDataDictionary – 如何访问ViewDataDictionary?
我正在创build一个表单来更新两个相关的模型,对于这个例子是一个包含任务集合的项目,我希望控制器接受一个单独的项目,该项目从表单input中加载了其任务集合。 我有这个工作,基本上是没有部分下面的代码。
这可能听起来很愚蠢,但我不知道如何从部分访问柜台(一)?
模型
public class Project { public string Name { get; set; } public List<Task> Tasks { get; set; } } public class Task { public string Name { get; set; } public DateTime DueDate { get; set; } }
Create.cshtml(查看)
@model MyWebApp.Models.Project @using(Html.BeginForm("Create", "Project", FormMethod.Post, new { id = "project-form" })) { <div> @Html.TextBox("Name", Model.Name) </div> @for(int i = 0; i < Model.Tasks.Count; i++) { @Html.Partial("_TaskForm", Model.Tasks[i], new ViewDataDictionary<int>(i)) } }
_TaskForm.cshtml(局部视图)
@model MyWebApp.Models.Task <div> @Html.TextBox(String.Format("Tasks[{0}].Name", 0), Model.Name) </div <div> @Html.TextBox(String.Format("Tasks[{0}].DueDate", 0), Model.DueDate) </div
注意上面的String.Format我硬编码0,我想使用ViewDataDictionary参数绑定到variables我从调用视图
猜猜我发布得太快了。 这个线程有我正在寻找的答案
asp.net MVC RC1 RenderPartial ViewDataDictionary
我结束了使用这个简洁的语法
@Html.Partial("_TaskForm", Model.Tasks[i], new ViewDataDictionary { {"counter", i} } )
然后在部分视图
@model MyWebApp.Models.Task @{ int index = Convert.ToInt32(ViewData["counter"]); } <div> @Html.TextBox(String.Format("Tasks[{0}].Name", index), Model.Name) </div> <div> @Html.TextBox(String.Format("Tasks[{0}].DueDate", index), Model.DueDate) </div>