Programing

모델 및 ViewDataDictionary가있는 asp mvc 부분-ViewDataDictionary에 어떻게 액세스합니까?

lottogame 2020. 11. 24. 07:30
반응형

모델 및 ViewDataDictionary가있는 asp mvc 부분-ViewDataDictionary에 어떻게 액세스합니까?


두 개의 관련 모델을 업데이트하는 양식을 작성 중입니다.이 예제에서는 태스크 컬렉션이있는 프로젝트입니다. 컨트롤러가 양식 입력에서로드 된 태스크 컬렉션이있는 단일 프로젝트를 수락하기를 원합니다. 본질적으로 부분이없는 아래 코드가 작동합니다.

이것은 어리석은 것처럼 들릴 수 있지만 부분에서 카운터 (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을 하드 코딩하고 있으며 호출하는 View에서 변수 i에 바인딩 된 ViewDataDictionary 매개 변수를 사용하고 싶습니다.


내가 너무 빨리 게시 한 것 같아요. 이 스레드에는 내가 찾던 답이 있습니다.

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>

참고URL : https://stackoverflow.com/questions/4865162/asp-mvc-partial-with-model-and-viewdatadictionary-how-do-i-access-the-viewdata

반응형