2011-08-09 42 views
0

(対象フレームワークが4.0)ASP.NET/MVC HTML ActionLink - 返されたJavascript値をActionLink routeValue parmに渡す方法は?

私は単純なテーブルで複数のレコードを削除する機能を実装しています。これを行うために、私はJavascript関数で単純なHTMLチェックボックスを使用して、選択されたものを見つけるためにそれぞれをループします。 Javascriptは、削除するレコードIDを表すint値の配列を返します。

私はActionLinkを使用してこのすべてを呼び出し、最終的に削除をデータベースに提出するために、コントローラファイル内で最終的に削除関数(int配列をparmとして)に戻ります。

私の問題は、JavascriptからActionLinkに戻ってコントローラーに渡すための配列の取得方法がわかりません。ここで

は私が働いているとのコードです:私が正しくあなたを理解していれば

<p> 
    @Html.ActionLink("Add New", "Add") | @Html.ActionLink("Delete Selected", "Delete", new { id = "???" }, new { onclick = "return getProjectsToDelete()" }) 
</p> 

<script type="text/javascript"> 

function getProjectsToDelete() { 

    var answer = confirm("Are you sure you wish to delete the selected projects?"); 

    if (answer) { 
     var listToDelete = new Array(); 
     var arrayCount = 0; 

     for (i = 0; i < document.projectList.deleteProject.length; i++) { 
      if (document.projectList.deleteProject[i].checked) { 
       listToDelete[arrayCount] = document.projectList.deleteProject[i].value; 
       arrayCount++; 
      } 
     } 

     return listToDelete; 
    } 
} 

</script> 

答えて

1

、あなたはコントローラにIDのコレクションをプッシュバックする方法を知りたいですか?

一般に、これはフォームとして実行され、フォームはバックエンドにPOSTされます。私は自分自身がAJAX経由でこれを行うことを好むが、それは私だけである。

GETを使用して、クエリ文字列内のすべてのIDを詰め込むことができますが、そのダーティー!

それは?/コントローラ/アクションのようになり、ID = 7 & ID = 8 & ID =

9一覧< int型>または[] int型へのそれを変換します.NETのモデルバインダー。

IDの配列を管理するには、Javascriptで「.push」を使用することをお勧めします。配列上の ".join"メソッドを使用してクリーンなクエリー文字列を作成することもできます。

+0

コードを再読み込みして、onclickイベントの仕組みを理解できないことに気づきます。 OnClickはクライアント側のメソッドで、クリックが実行される前にクライアント側でスクリプトを実行していくつかの作業を行います。あなたのイベントが「偽」を返した場合、クリックは中止され、アクションは実行されません。 OnClickイベントを使用して、バックエンドコントローラに任意の種類のデータを返すことはできません。 HTTP GET(URLのクエリーストリングまたはAJAX経由)またはHTTP POST(フォーム送信またはAJAX)を介してのみデータを戻すことができます アクションリンクは、設定したルートに基づいてURLを含むリンクを生成することを覚えておいてください。 –

関連する問題