2016-05-16 18 views
0

Iリストにデータを含むビューがあります。リストにはテーブルにデータが格納されます。
ビュー:HiddenFor値をビューからコントローラに渡す方法

@using (Html.BeginForm("DistrictReport", "Reports", FormMethod.Post)) 
{ 
@for(int i = 0; i < Model.Count; i++) 
{ 
<tr> 
    <td> 
     @Html.DisplayFor(model => Model[i].DISTRICT) 
     @Html.HiddenFor(model => Model[i].DISTRICT) 
    </td> 
    <td> 
     <input type="submit" name="submitButton" value="Show Report 1"/> 
     <input type="submit" name="submitButton" value="Show Report 2"/> 
    </td> 
</tr> 
} 
} 

そして、ここでは私のコントローラです。
コントローラ:

public ActionResult DistrictReport(string DISTRICT, string submitButton) 
{ 
    if (submitButton.Contains("Show Report")) 
    { 
    var district = new SqlParameter 
     {   
     ParameterName = "District", 
     Value = DISTRICT 
     }; 
enter code here 
var list = db.Database.SqlQuery<ReportDistrict>("exec getDistrictNumber @District", district).ToList<ReportDistrict>(); 
    //..... 
    } 
} 

私はページショーは、DISTRICTの値がnullであったことを警告し、送信ボタンをクリックしてください。 私がする必要があるのは、ストアドプロシージャを実行できるようにDISTRICT値をコントローラに取得することです。 問題は、ビュー内の各行にボタンがあることです。 ここに警告があります:

'(@District nvarchar(4000))exec getDistrictAndNumber @District' expects the parameter '@District', which was not supplied. 

何か提案がありますか?これを行う他の方法も非常に歓迎されています。

+0

をあなたのアクションで単一の変数を使用しますが、ビューにあなたは以下を使用しなければならない理由地区のリストがthatsの存在しています非表示のフィールドのように見えると、ネットワークモニタは、投稿されたデータの表示ですか? – Jasen

+0

あなたのビューはコレクションなので、postメソッドもコレクションである必要があります。 postメソッドは 'Public ActionResult DistrictReport(List <###> model、string submitButton)'でなければなりません。 '### 'はビューで使用したモデルです。 (または、それは 'public ActionResult DistrictReport(string [] DISTRICT、string submitButton)' –

+0

です。タイトルに不要なキーワードを追加しないでください - – slugster

答えて

1

これにはいくつかの選択肢があります。

  1. 使用を開始するフォームのHTMLヘルパーは、これはあなたがフォームの詳細とに投稿することができ、あなたのsubmitボタンがそのアクションに投稿するアクションを持つことができるようになります。

    https://msdn.microsoft.com/en-us/library/dd505244(v=vs.118).aspx

    beginformは、あなたのアクションとコントローラを指定するパラメータになります。送信ボタンはこれを自動的に使用します。

  2. jQueryを使用してajaxルーチンを実行し、jQueryのajax "data"値からコントローラの値を渡すことができます。この方法では、idやclassをHTML要素に持たせる必要があります。そして、ajaxメソッドを呼び出す前にjQueryを使用してこれをフェッチすることができます。

    http://api.jquery.com/jquery.ajax/

1

あなたは何をレンダリングしない。..

public ActionResult DistrictReport(string[] DISTRICT, string submitButton) 
+0

私はこれを試しましたが、それでも助けになりません。ビューで何かを変更する必要がありますか? – Waller

関連する問題