首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >带有模型和ViewDataDictionary的asp部分-如何访问ViewDataDictionary?

带有模型和ViewDataDictionary的asp部分-如何访问ViewDataDictionary?
EN

Stack Overflow用户
提问于 2011-02-02 00:28:01
回答 1查看 79.9K关注 0票数 67

我正在创建一个更新两个相关模型的表单,在本例中是一个具有任务集合的Project,我希望控制器接受一个从表单输入加载其Task集合的Project。我有这个工作,本质上是下面的代码没有分部。

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

模型

代码语言:javascript
复制
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 (视图)

代码语言:javascript
复制
@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 (局部视图)

代码语言:javascript
复制
@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

注意上面的视图,我正在硬编码0,我想使用ViewDataDictionary参数,该参数从调用的String.Format绑定到变量i

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-02 00:57:04

我想我发得太快了。这个帖子有我想要的答案

asp.net MVC RC1 RenderPartial ViewDataDictionary

我最终使用了这个简洁的语法。

代码语言:javascript
复制
@Html.Partial("_TaskForm", Model.Tasks[i], new ViewDataDictionary { {"counter", i} } )

然后在局部视图中

代码语言:javascript
复制
@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>
票数 136
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4865162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档