4

私は現在、.netmvc3アプリケーションを開発しています。ここに問題があります。何らかの理由で、私はAjax.BeginFormを使用していて、正しいアクションが呼び出されていますが、アクションが完了した後、存在しない別のページにリダイレクトしようとしています。ただし、同じページにとどまり、ajaxを使用してフォームを送信し、アクションの完了後にユーザーにわかりやすいメッセージを返すようにします。

これが私のAjax.BeginFormページです:

@using (Ajax.BeginForm("Action", "Controller", new AjaxOptions { HttpMethod = "Post" }))
{
    <div id="lnkContainer"><a href="#" onclick="javascript:document.forms[0].submit(); return false;">Update</a>&nbsp;</div>
    @Html.TextAreaFor(m => m.Message, new { style = "width:575px" })
}

これが私の行動です:

[Authorize]
[AcceptVerbs(HttpVerbs.Post)]
public PartialViewResult Action(ActionModel actionModel)
{
database-related code
.....
database-related code

return PartialView(); 
}
4

2 に答える 2

1

私はあなたの問題がにあるとかなり確信していますonclick="javascript:document.forms[0].submit();"。これにより、通常のPOSTリクエストとしてフォームが送信されます。@Ajax.BeginFormヘルパーを使用する場合は、通常のコマンドを使用<input type="submit">して送信をトリガーします。本当にリンクを使用する必要がある場合は、@Ajax.BeginFormjQueryなどを使用してAjaxリクエストを送信するコードをコーディングする必要があるため、使用することは実際には重要ではありません。

リダイレクトに関する限りAjax.BeginForm、ユーザーがブラウザでjavascriptを無効にした場合、または適切なスクリプトが欠落している場合など、フォームは通常のHTMLフォームに戻ります。

于 2012-11-21T07:22:45.737 に答える
0

私は同じ問題に直面しました、私はBundleConfig.csに以下のコードを追加することによってそれを解決しました bundles.Add(new ScriptBundle("~/bundles/jqueryajax").Include( "~/Scripts/jquery.unobtrusive-ajax.js"));

次に、 _Layout.cshtmlの以下のコード

@Scripts.Render("~/bundles/jqueryajax")

于 2020-04-16T12:12:49.123 に答える