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"})) {}

但是如果我把它移到下面

Views/Test 文件夹(本例中的控制器是 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

I had the same issue (but in ASP.Net MVC 5) when I realized I was actually using the wrong overload of the BeginForm-method. Simply changing to this resolved the issue for me:

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

Notice the null parameter being sent for the routevalues object.

于 2014-10-16T11:21:12.230 回答