2009-04-06 23 views
4

私はasp.net MVCを初めて使用しています。私は私のビューを作成し、データを表示することができました(Gridview)。さらに、私は文字列とint型を渡す(Url.Actionを使って)ハイパーリンクを作成することができました。しかし、より複雑な型を参照しているハイパーリンクを作成したいと思います。私のビューに関連付けられたクラスには、Listへの参照があります。私が欲しいのは、コントローラにそのリストを渡すことができるようにすることですし、その後、コントローラが呼び出すとき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(「ヴィ(コントラクト)Container.DataItem).ContractItems.ToList ()})%> ' –

+0

GridView ...?wItems "、new {c =それはWebFormsのコントロールではありませんか? MVCでそれを使用するべきではありません。 – Charlino

+0

Charlieが正しいです。この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> 

だろう。このケースでは、理想的に強く、このモデルに入力されたビューに渡すために、このモデルを行くと入手持つように見ていることになります。だから、あなたはMyControllerコントローラであなたのアクションを持つことができますこの方法では、そう

のような(mymodelというのインスタンスに関連付けられている)のビューShowListPageを返す、例えば

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

、IDを取るコンストラクタを持つモデルオブジェクトを持っています

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

希望これは私が何が起こったのかわからないが、それは表示されません、

マーク

関連する問題