2

送信時にコントローラーメソッドに到達しないフォームがあります(そこにブレークポイントを置きます)

    [HttpPost]
    public ActionResult SaveBilling( FormCollection fc )
    {
...
}

フロントエンドコードはこのようなものです

<form action="/PersonSettings/SaveBilling" method="post" >
...
<input type='submit' value="save" />
</form>

何か案は ?

ブラウザーで /PersonSettings/SaveBilling に移動すると GET バージョンに到達するため、ルート ハンドラーの問題であるかどうかはわかりませんが、post メソッドは空白のページを生成するだけで、コードには入りません。

4

5 に答える 5

5

ビューを次のように書き換えます。

@using (Html.BeginForm("SaveBilling", "PersonSettings", FormMethod.Post))
{
    ....
    <input type='submit' value="save" />
}

このコントローラーはどこかのエリアにありますか?

于 2012-10-23T09:19:34.797 に答える
1

これが解決されたことは理解していますが、別の考えられる原因に取り掛かると思いました。コードに を使用[ValidateAntiForgeryToken]せずにメソッドに属性を設定@Html.AntiForgeryToken()すると、同じ問題が発生します。

于 2014-05-05T20:23:21.810 に答える
0

フォームを使用してアクション パスを定義します。

<form id="subscriptionForm" action="/Category/Create" method="post"> 

--your div 

</form >

スクリプトを使用してフォームをシリアル化します

<script type="text/javascript">
        $('#Save').click(function () {
            var form = $("#subscriptionForm");
            var url = form.attr("action");
            var formData = form.serialize();
            $.post(url, formData, function (data) {
                $("#msg").html(data);
            });
        })
    </script>

これで、コントローラー アクションに到達できます。

于 2014-02-13T05:05:31.427 に答える
0

結局のところ、それはルーティング関連の問題であることがわかりました。いくつかの複雑なルートがあり、デフォルトの mvc ルートは、エリアのあるデフォルトの mvc ルートを通過する必要があるものをキャッチしていました。

フォームコレクションの代わりに関数に明示的なパラメーターを指定することで問題を再現できたので、それが問題だった可能性があります。

于 2012-10-23T10:10:08.050 に答える