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>