2013-02-26 3 views
1

내가 뭘하려는 건지 편집자가 컨트롤러에 전달한 항목을 전달하지만 컨트롤러로 전달할 수있는 것은 문자열입니다.클릭하여 @ Html.ActionLink를 통해 객체를 전달하십시오.

전망 :

foreach (MenuItemViewModel menuitem in category.MenuItemList) 
{ 
    <span class="MenuItemTitel"> 
    @if (IsAdmin) 
    { 
     <span class="AdminSpan"> 
      @Html.ActionLink("Edit", "EditPage", "Admin", new { name = menuitem.Title }) 
     </span> 
    } 
     @menuitem.Title 
    </span> 
} 

컨트롤러 :

public ActionResult EditPage(MenuItemViewModel MenuItem) {} 

답변

3

지정된 컨트롤러/액션에 대한 URL 링크를 생성 할 것이다 @Html.ActionLink() 방법. 따라서 링크 URL에 포함될 수있는 매개 변수 만 포함 할 수 있습니다. 그래서 당신은 URL을 통해 객체를 통과시킬 수 없습니다.

서버에 저장된 개체에 대한 참조를 전달해야하는 경우 서버에 저장된 개체에 대한 참조를 제공하기 위해 링크의 매개 변수를 설정하여 해당 작업에서 검색 할 수 있습니다 (예 : 해당 menuItem의 ID).

위의 함수 호출에서 세 번째 항목으로 전달한 컬렉션을 통해 ActionLink의 매개 변수가 설정됩니다. 기본 라우팅을 가정하면 /Admin/EditPage/?name=XXX과 같은 주소가 부여됩니다. 여기서 XXX는 menuitem.Title의 값입니다. 여기에 itemId = menuitem.Id과 같은 다른 내용이 포함 된 경우 생성 된 URL에 쿼리 문자열 매개 변수로 추가됩니다. 그러면이 링크의 대상인 작업에 액세스 할 수 있습니다.

+0

나는 당신이 제공하는 링크의 매개 변수를 설정 "에 의해 무슨 뜻인지 모르겠어요 서버에 저장된 객체에 대한 참조 " – NNassar

+0

이에 대한 자세한 내용을 제공하는 답을 편집했습니다. –

0

헬프로 객체를 전달한 @Html.Action(). 아래의 코드를 참조하십시오

@Html.ActionLink("Lista Valores", "Lista", "RandomName", 
new { 
    Id = @ViewBag.Id, 
    Name = "fdsfsadf", 
    LastName = @ViewBag.LastName, 
    Breed = @ViewBag.Breed, 
    System = ViewBag.sys 
}, null) 

컨트롤러 :

public ActionResult Lista(CharNames character) 
{ 
    return View(character); 
} 

보기 :

<p>@Html.LabelFor(x => x.Id) @Model.Id</p> 
<p>@Html.LabelFor(x => x.Name) @Model.Name</p> 
<p>@Html.LabelFor(x => x.LastName) @Model.LastName</p> 
<p>@Html.LabelFor(x => x.Breed) @Model.Breed</p> 
<p>@Html.LabelFor(x => x.System) @Model.System</p> 
관련 문제