13

コントローラでPOSTメソッドが宣言されています:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult UpdateComments(int id, string comments)
{
    // ... 
}

そして私の見解ではActionLink:

<%= Ajax.ActionLink("update", "UpdateComments", 
                        new { id = Model.Id, comments = "test" }, 
                        new AjaxOptions { 
                                HttpMethod="POST", 
                                OnFailure="alert('fail');", 
                                OnSuccess = "alert('success');" 
                            })%>

このリクエストをルーティングしようとすると、「見つかりません」というエラーが発生します。

コントローラのUpdateCommentsメソッドからPOST制限を削除すると、正常に機能します。

私は何が欠けていますか?

4

4 に答える 4

7

OnFailure自分とOnSuccessコールバックを宣言する方法が気に入らなかったようです。AjaxOptionsオブジェクトを解析できなかったので、設定を無視していたと思いHttpMethod="POST"ます。

次のように変更して動作させました。

OnFailure="function() { alert('fail'); }",
OnSuccess="function() { alert('success'); }" 
于 2010-06-14T11:59:28.383 に答える
4

私は現在ASP.MVCを学習していますが、Ajax.ActionLinkでその問題が発生しました。本来のように、POSTメソッドではなくGETメソッドを取得しました。次に、スクリプトライブラリ参照を追加しなかったことに気付きます。

<script src=”/Scripts/MicrosoftAjax.js” type=”text/javascript”&gt;</script>
<script src=”/Scripts/MicrosoftMvcAjax.js” type=”text/javascript”&gt;</script>

スクリプトを追加した後、それはうまくいきました!

于 2011-04-29T18:53:07.420 に答える
0

FormCollectionには、コレクションを常に初期化するデフォルトのバインダーが関連付けられており、nullになることはありません。フォーム送信ボタンを使用する場合とは対照的に、Ajax.ActionLinkを使用する場合は空のコレクションがある可能性が高くなります。これは、ActionLinkメソッドがAJAXリクエストを実行するときにフォーム値をPOSTしないためです。 この投稿はあなたへの質問への答えです

于 2011-01-20T14:24:33.137 に答える
0

含めてみてください

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/MicrosoftAjax.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/MicrosoftMvcAjax.js")" type="text/javascript"></script>
于 2012-01-10T00:46:34.720 に答える