2009-04-06 5 views
4

asp.net MVC를 처음 사용합니다. 내보기를 만들고 데이터를 표시 할 수있었습니다 (Gridview). 또한, 문자열과 int 유형을 전달하는 하이퍼 링크 (Url.Action 사용)를 만들 수있었습니다. 그러나 더 복잡한 형식을 참조하는 하이퍼 링크를 만들고 싶습니다. 내보기와 연관된 클래스에는 목록에 대한 참조가 있습니다. 내가 원하는 컨트롤러에 그 목록을 통과 할 수있을 것입니다 다음 컨트롤러가 호출 할 때ASP.NET MVC. Url.action을 사용하여 컨트롤러에 객체를 전달하는 방법을 모르겠다.

public ActionResult ViewItems(List<Items> c) 
{    
    return View(c); 
} 

내 생각은 (아래 참조) 매개 변수 목록으로 얻을 내 컨트롤러의 추가 ActionResult를 만드는 것입니다 해당하는 뷰. 나는 시도했다 (아래를 보라). 그러나 나는 단지 비어있게된다. 당신은 그리드를 찾고 있다면

<asp:HyperLink ID="LinkContractID" runat="server" NavigateUrl='<%#Url.Action("ViewItems", new {c = **((Contract)Container.DataItem).ContractItems.ToList<Items>(**)}) %>' 
Text='<%# Eval("ContractId") %>'></asp:HyperLink> 
+0

: NavigateUrl = '<% # Url.Action ("우열을 wItems ", 새 {c = ((Contract) Container.DataItem) .ContractItems.ToList ()}) %> ' –

+0

GridView ...? 그 WebForms 컨트롤 아닌가요? 당신은 MVC와 함께 사용해서는 안됩니다. – Charlino

+0

Charliel이 맞습니다. 이 Eval()은 MVC와 함께 작동하지 않습니다. –

답변

1

this tutorial는 MVC 그리드를 만드는 방법을 보여줍니다.

0

MVC를 사용하면 Gridview 및 asp : controls를 사용하지 않아야합니다. 링크를 생성하려면 필요한 매개 변수와 함께 < % = Html.ActionLink (...) %>를 사용하십시오.

3

이전 대답과 마찬가지로 asp 컨트롤을 사용하지 않습니다. Html.ActionLink에는 찬반 양론이 있지만, 예를 들어 이미지 주위에 링크를 넣고 싶다면 좋지 않습니다. 이 경우 구문은 컨트롤러의 액션과 또한

<a href="<%= Url.Action(
    "ShowListPage", "MyController", new { modelId = 101 }) %>"> 
    <img src="img.gif" /> 
</a> 

, 당신은 이상적이 가서 강력하게이 모델에 입력 된 뷰에 전달할 모델을 얻을이 찾고 될 것입니다. 그래서 당신은 너무

같은 예를

public MyModel(int modelId) 
{ 
    this.TheListThatHoldsTheGridData = MyDataLayerProc(modelId); 
} 

당신의 (a MyModel 인스턴스와 연관된)보기 ShowListPage을의 MyController에 컨트롤러의 액션을 반환 할 수 있습니다이 방법을, ID를 복용 생성자와 모델 객체가 이 도움이

public ActionResult ShowListPage(int modelId) 
{ 
    return View(new MyModel(modelId)); 
} 

희망,

마크

무슨 일이 있었지만 표시되지 않습니다 모르는
관련 문제