반응형
모델 및 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>
반응형
'Programing' 카테고리의 다른 글
Android-브로드 캐스트 인 텐트 ACTION_SCREEN_ON / OFF 수신 방법 (0) | 2020.11.24 |
---|---|
JavaScript를 사용하여 리퍼러의 도메인 / 호스트 이름을 어떻게 얻습니까? (0) | 2020.11.24 |
출력 파일을 열 수 없습니다. 권한이 거부되었습니다. (0) | 2020.11.24 |
Git에서 커밋 그룹을 하나로 축소 (0) | 2020.11.24 |
자바 스크립트 객체 감지 : 도트 구문 대 'in'키워드 (0) | 2020.11.24 |