【问题标题】:asp mvc partial with model and ViewDataDictionary - how do I access the ViewDataDictionary?带有模型和 ViewDataDictionary 的 asp mvc partial - 如何访问 ViewDataDictionary?
【发布时间】:2011-02-01 16:28:01
【问题描述】:

我正在创建一个更新两个相关模型的表单,对于这个例子,一个包含任务集合的项目,我希望控制器接受一个项目,该项目的任务集合是从表单输入中加载的。我有这个工作,基本上下面的代码没有部分。

这听起来可能很傻,但我不知道如何从部分访问计数器 (i)?

型号

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 参数,该参数绑定到来自调用 View 的变量 i

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    我猜我发的太早了。这个帖子有我正在寻找的答案

    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>
    

    【讨论】:

      猜你喜欢
      • 2021-10-08
      • 2017-09-26
      • 2023-03-17
      • 2022-01-19
      • 2022-06-27
      • 2020-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多