2

我使用 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)
        {
....
4

3 回答 3

2

在 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>
于 2012-08-21T15:13:30.150 回答
1

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

于 2012-08-22T06:05:57.290 回答
1

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

于 2012-08-22T11:32:04.217 回答