2012-09-10 5 views
1

사용자가 기본 그리드 뷰에서 행을 선택한 후 관련 데이터를 삽입 할 수있는 하위 뷰를 만들어야합니다.인덱스 작업에 매개 변수 전달

하위 뷰는 부모 행을 나타내는 ID를 수신해야합니다.

어떻게이 매개 변수를 전달할 수 있습니까? ViewBag?

추 신 : 뷰와 컨트롤러가 다르고 다른 컨트롤러의 인덱스 동작에 Html.ActionLink를 사용하여 하위 뷰가 열립니다.

답변

0

자식 뷰를 호출하는 작업 메서드에 부모의 ID를 매개 변수로 전달하십시오.

@Html.ActionLink("Add Related Data","Add",new { @id=364}) 

는보기

에서 자녀의 행동에 동적 값으로 364을 교체 ID에서 부모 오브젝트를 취득하고 보여 그 아이 뷰입니다. ViewModel이 자식 뷰에 대해 좋아한다고 가정합니다.

public class ChildDetails 
{ 
    public int ID { set;get;} 
    public string Note { set;get;} 
    public int ParentID { set;get;} 
    public string ParentName { set;get;} 
} 

하위 세부 정보에 대한 부모 세부 정보를 가져오고 ViewModel에서 관련 속성 값을 설정합니다.

public ActionResult Add(int id) 
{ 
    var parent=yourRepositary.Get(id); 
    ChildDetails childViewModel=new ChildDetails(); 
    childViewModel.ParentID=id; 
    childViewModel.Name=parent.Name; 
    return View(childViewModel); 
} 

자녀보기가 강하게 ChildDetails 클래스에 바인더 제본됩니다

@model ChildDetails 

<h2>@Model.ParentName</h2> 
@using(Html.BeginForm()) 
{ 
    @Html.TextBoxFor(x=>x.Note) 
    @Html.HiddenFor(x=>x.ParentId) 
    <input type="submit" /> 
} 
내가 대신 새로운 액션을 만드는, 하위 항목을 나열하는 기존의 색인 작업을 사용하고 싶습니다
+0

. 가능한가? –

+0

기존 작업을 사용할 수 있습니다. 나는 그것을 일반적인 예로 만들기 위해 add 메소드를 작성했다. – Shyju

0

다른 작업을 열고 있기 때문에 쿼리 문자열로 전달하십시오.

0

여러 가지 방법으로 매개 변수를 전달할 수 있습니다.

ViewBag.MyParam = "1"; 

ViewData("MyParam") = "1"; 

TempData("MyParam") = "1"; 

참고 : 이것은 VB이므로 C#은 약간 다릅니다.

그렇지 않으면 Rob이 말한 것처럼 쿼리 문자열을 통해 전달할 수 있습니다.