【问题标题】:Call ActionResult from Ajax.BeginForm从 Ajax.BeginForm 调用 ActionResult
【发布时间】:2012-08-16 23:28:59
【问题描述】:

我使用 Ajax 开始表单,当我点击提交按钮时,post 方法没有调用,这里是代码:

 @using (Ajax.BeginForm(new AjaxOptions { UpdateTargetId = "personListDivforReturnPerson"}))
    {        
        <div class="ReturnPersonGeneralPageBody">
            <div class="returnPersonHeader">
                საზღვრის კვეთისას დაფიქსირებული მონაცემები
            </div>
            <div class="fieldNameForMIA">
                <span>@Html.LabelFor(model => model.LastName, "გვარი")
                    <br />
                    @Html.EditorFor(model => model.LastName)
                 </span>
                <div class="fieldNameInnerForMIA">
                    <span>@Html.LabelFor(model => model.FirstName, "სახელი")
                        <br />
                        @Html.EditorFor(model => model.FirstName)
                       </span>
                </div>
            </div>
            <div class="fieldNameForMIA">
                <span>@Html.LabelFor(model => model.PersonalNo, "პირადი ნომერი")
                    <br />
                    @Html.EditorFor(model => model.PersonalNo)
                   </span>
                <div class="fieldNameInnerForMIA">
                    <span>@Html.LabelFor(model => model.DateOfBirth, "დაბადების თარიღი")
                        <br />
                        @Html.EditorFor(model => model.DateOfBirth)
                      </span>
                </div>
            </div>
            <div class="fieldNameForReturnCheckBox">
                @Html.LabelFor(model => model.IsIdentified, "სხვა სახელით დაბრუნდა")
                @Html.CheckBoxFor(model => model.IsIdentified)              
            </div>
            <div class="saveReturnPerson">
                <input type="image" name="submit" id="submit" src="/Content/Resources/SaveGeo.gif" />
            </div>
        </div>
    }

这里是从未调用过的 post 方法:

        [HttpPost]
        public ActionResult EditReturnPerson(int id, FormCollection collection)
        {  ....

但是这个方法是在第一次加载的时候调用的:

 public ActionResult EditReturnPerson(long parentObjectId, int parentObjectTypeId, bool readOnly = false)
        {
....

【问题讨论】:

    标签: asp.net-mvc-3 asp.net-ajax


    【解决方案1】:

    我发现了我的问题,这部分的问题是[HttpPost] public ActionResult EditReturnPerson(int id, FormCollection collection) { ....,id是int,我在DB中的id是bigint,所以我在控制器中将int改为long,一切正常,谢谢建议。

    【讨论】:

      【解决方案2】:

      ბიჭოაქვერგეტყვიანვერაფერს:dგეუბნებისერვერსმიმართავსდაიქუშლისრაღაცახელს。 კლიენტის მხარეს ყველაფერი კარგადაა。 ესკიდემაგარიკაცია,ფორმასუკეთებსუბმითსდა默认მეთოდიარისპოსტიმაგდროს。

      【讨论】:

      • თუვერმიპასუხესშენპასუხსვნიშნავსწორ:d span>
      • :D:D:D:D:D:D:D(ამდენისმაილიიმიტომრომკომენტარისდასაწერადსიმბოლოებიიყოსიყოს):D span>
      【解决方案3】:

      在 AjaxOptions 中将方法称为 POST

      new AjaxOptions { UpdateTargetId = "personListDivforReturnPerson", 
                                                               HttpMethod ="POST"}
      

      如果不提,默认为GET

      编辑:另外,如果您想用自己的代码处理它,您可以使用手写的 JavaScript 来完成。非常干净和完全控制。

      摆脱AjaxBeginForm 并在您的视图中使用普通形式。

      @using(Html.BeginForm())
      {
        @Html.EditorFor(model => model.FirstName)
        @Html.EditorFor(model => model.PersonalNo)
        <input type="submit" class="ajaxSubmit" />
      }
      

      现在有一些 javascript 来处理表单提交

      <script type="text/javascript">
       $(function(){
      
         $(".ajaxSubmit").click(function(e){
              e.preventDefault();
              var item=$(this);
              $.post("@Url.Action("EditReturnPerson","YourControllerName")",
                               item.closest("form").serialize(), function(response){
      
                          $("#personListDivforReturnPerson").html(response);
              });              
         });
      
       });
      
      </script>
      

      【讨论】:

      • HttpMethod ="POST" 没有帮助,也总是调用 OnFailure,代码有问题,我找不到。 @using (Ajax.BeginForm(new AjaxOptions { UpdateTargetId = "personListDivforReturnPerson" , HttpMethod ="POST", OnFailure = "alert('Fail');"})) {...
      • 检查其他脚本错误。萤火虫控制台显示什么?它得到什么回应?你试过“Pure Javacsript”版本吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-09
      • 1970-01-01
      • 2016-04-13
      • 1970-01-01
      相关资源
      最近更新 更多