从Ajax.BeginForm调用ActionResult

时间:2012-08-21 15:08:13

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

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

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分:1)

ბიჭოაქქვერიანნაფერს:Dგეუბნებისერვერსსერვერსიმართავსვსაიქქისსაღაცახელს。 კლიენტისსარესრესაფერიკარგადაა。 ესესიდედეაგარიკაცია,ფორმასსუკეთებით-სსაdefaultმეთოდიარისსიმაგდროს。

答案 2 :(得分:1)

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