0

リンクと検索ボタンがあります。検索ボタンをクリックすると、事前定義されたアクションにページが投稿されます。リンクをクリックすると、ページが別のアクションにポストされ、非表示のすべての値が別のアクションにポストされるはずです。それはできますか?

4

2 に答える 2

4

通常、リンクはアンカー タグを生成し、通常はHTTP GETリクエストを返します。投稿リクエストではありません。actionメソッドのパラメーターとして受け入れられるパラメーターをリンクに指定できます。

@Html.ActionLink("Search","Search","Items",new { @id="nokia" },null);

これにより、値が nokia の id というクエリ文字列キーを持つリンクが生成されます。

../Items/Search/nokia

また

../Items/Search?id=nokia

そして、idパラメータを持つアクションメソッドはこのGETリクエストを処理できます

public ActionResult Search(string id)
{
  //Do whatever you want to do with the value in id. return a view with results
}

本当にリンクから実行したいHTTPPost場合は、JavaScript でリンクのクリック イベントを取得して、httppost 呼び出しを行うことができます。以下のスクリプトは、jQuery ライブラリでそれを行います。

$(function(){

  $("a").click(function(e){
    e.preventDefault();
    $.post($(this).attr("href"),function(result){
      //do whatever with the results 
    });
  }); 

});

ただし、このリクエストを処理するために、コントローラーに ActionMethod の HttpPost バージョンがあることを確認してください。

[HttpPost]
public ActionResult Search(string id)
{
  //This is a POST request.Do whatever you want to do with the value in id. return a view with results
}
于 2012-05-13T02:25:13.473 に答える
1

@Html.ActionLinkHTTP POST には使用できません(編集: javascript 関数を使用して onClick HtmlAttribute を指定してフォームを送信しない限り) 。代わりに送信ボタンを使用し、jQuery を使用してハイパーリンクとしてスタイルを設定できます。この場合、どのような値でもモデルを投稿できるはずです。

@Ajax.ActionLinkまたは、使用して指定することもできますAjaxOptions { HttpMethod = "POST" }

于 2012-05-13T02:35:52.340 に答える