2009-06-01 21 views
6

私は問題がありますが、パラメータを渡すajaxリンクがありますが、開くページにそのパラメータは必要ありません。ページは2つの部分ビューのみをロードします。そのうちの1つは、パラメータをページに渡してデータを正しくロードする必要があり、もう1つはフォームをロードする必要があるため、そのパラメータは必要ありません。どのように私はこれを達成することができますか?asp.net mvcパラメータのページから部分的な表示へ

答えて

0

//コントローラ

public ActionResult EditFunctions(int id) 
    { 

     var sysfunctions= UnisegurancaService.FunctionsRepository.All(); 
     return View(sysfunctions); 
    } 
    // This is the controller (it does no need the parameter "ID") 

//これは、あなたがやりたいためにビュー "EditFunctions"

<div id="formFunction"> 
<% Html.RenderPartial("FormFunction"); %> 
</div> 


<div id="gridFunction"> 
<% Html.RenderPartial("GridFunction"); %> // The grid needs the ID to work correctly but its in the parent page not in the partial call....and the call is an ajax call 
</div> 
+0

GridFunctionの部分表示が強く入力されていますか? –

6

である、あなたはViewDataを構造体にIDを追加する必要があります。

あなたはもちろん、必要に応じてキャスト部分

<%= Html.RenderPartial("GridFunction", (int)ViewData["NeededID"]) %> 

をレンダリングビューで、その後

var sysfunctions= UnisegurancaService.FunctionsRepository.All(); 
ViewData["NeededID"] = id 
return View(sysfunctions); 

2番目のパラメータとしてプッシュインされるものは、部分的に.Modelになります。あなたの部分文字列も強く入力することをお勧めします。

+0

申し訳ありませんがタイプミスを修正しました –

+0

問題ありません。私は私の答えをより役に立つものにしました。あなたが強く(私はあなたがそれらを入力することをお勧めします)部分を入力したくない場合は、ViewDataDictionaryでeu-ge-neによるアドバイスが良いです。 –

3

このお試しください:UPDATED

<% Html.RenderPartial("GridFunction", new ViewDataDictionary {{"Id", ViewData["Id"]}}); %> 

そして、あなたのコントローラのアクションでこれを追加します。

ViewData["Id"] = Id; 

更新:

そして、あなたのGridFunctionパルティ内をページの一部の依存性は、パラメータを必要とする場合、そのページは、データを通過するのに十分を知っている必要があり、そのページがデータを提供することができるはず

<%= ViewData["Id"] %> 
0

:アルビューますようイドにアクセスすることができます。または、より簡単に言えば、パラメータをページのビューデータに追加して、それを使って終了します。

関連する問題