1

モデルの ID の値を持つビュー (チェックボックス) にフィールドがあります。ユーザーがフォームでチェックした ID のリストをコントローラー アクションに返す必要があります。

私が試したことはすべてうまくいきません。コントローラーに戻るようにビューをコーディングしましたが、必要な値を返す方法がわかりません。

これは、ビュー内のチェックボックスのスニペットです...

<td @trFormat >
    <input id="ExportCheck" type="checkbox" value = "@item.PernrId" onclick="saveid(value);"/>
</td>

現在、onclickイベントは、id値を保存する必要があるビューでjavascriptを起動しています...

<script type="text/javascript">
    var keys = null;
    function saveid(id) {
        keys += id;
    }
</script>  

アクション コールを使用してコントローラーに戻ろうとしています。現在、ルーティング オブジェクトをロードする方法がわからないため、送り返されているルーティング オブジェクトはありません...

<input type="submit" value="Export to Excel" onclick="location.href='@Url.Action("ExportExcel","CastIndex")'" />

私はおそらくこのコードで多くのことを間違っていることを知っています。私は今、最初の MVC アプリケーションに取り組んでいます。どんな助けでも大歓迎です。最終的な結果は、選択した ID を取得し、それらを Excel へのエクスポートに送信するために、コントローラーに ID が必要であるということです。

4

1 に答える 1

0

次のような強く型付けされたモデルを使用できます。

public class Item
{
    public int Id { get; set; }
    public string Name { get; set;}

    //Other properties...

    public bool Export {get; set;} //for tracking checked/unchecked
}

コントローラーの GET アクションで、List を作成し、それを厳密に型指定されたビューに渡します。

[HttpGet]
public ActionResult MyAction()
{ 
   var model = new List<Item>();

   //ToDo: Get your items and add them to the list... Possibly with model.add(item)

   return View(model);
}

ビューでは、HTML ヘルパー「CheckBoxFor」を使用して、リスト内の各項目にチェック ボックス項目を追加できます。

@using (Html.BeginForm())
{

//other form elements here

@Html.CheckBoxFor(model=>model.Export) //this add the check boxes for each item in the model

<input type="submit" value="Submit" />

}

コントローラーの POST アクションは List を消費し、Export == true を持つものを探すことができます:

[HttpPost]
public ActionResult MyAction (List<Item> items)
{
  foreach(Item i in Items)
  {
     if(i.Export)
     {
         //do your thing...
     }
  }

  //Return or redirect - possibly to success action screen, or Index action.
}
于 2012-09-14T18:45:19.603 に答える