0

誰もがここでの取引が何であるか知っていますか?Ajax.BeginFormをcshtmlファイルに入れた場合

ビュー/共有フォルダ

それは動作しません:

 @using (Ajax.BeginForm("TestAction", "Test", new AjaxOptions
 {
     HttpMethod = "Post"
 }
 , new { id = "submitTestForm" })) {}

しかし、通常のHtml.BeginFormは次のことを行います。

@using (Html.BeginForm("TestAction","Test",FormMethod.Post,new {id="submitTestForm"})) {}

しかし、私がそれを下に動かすと

ビュー/テストフォルダー(この場合のコントローラーはTestControllerになります)

正常に動作します。

これはバグですか?それとも私はここで何か間違ったことをしていますか?

4

2 に答える 2

1

共有フォルダーから機能しない理由はわかりませんが、ajax フォームを削除して通常のフォームを使用し、手書きの CLEAN JavaScript を自分で書いて同じことを行うことができます

@using(Html.Beginform("testAction","test",FormMethod.Post, new { id="submitTestFrm"})
{

  <input type="submit" />
}

<script type="text/javascript">
 $(function(){
     $("#submitTestFrm").submit(function(e){
        e.preventDefault();
        var _this=$(this);
        $.post(_this.attr("action"),_this.serialize(),function(response){
          //do something with the response.
      });
     });    
 });
</script>
于 2012-10-19T23:28:57.763 に答える
0

BeginForm メソッドの間違ったオーバーロードを実際に使用していることに気付いたとき、同じ問題が発生しました (ただし ASP.Net MVC 5 で)。これに変更するだけで問題が解決しました:

@using (Html.BeginForm("TestAction","Test", null, FormMethod.Post, new {id="submitTestForm"})) {}

routevalues オブジェクトに対してnullパラメータが送信されていることに注意してください。

于 2014-10-16T11:21:12.230 に答える