Форма MVC Ajax.Begin не отправляется обратно в actionresult - PullRequest
1 голос
/ 14 сентября 2011

Недавно я изменил приведенный ниже код с использования обычной HTML-формы на использование ajax.beginform, но он не публикует результат действия PostCheckListCompleted. Есть идеи, почему это не работает?

        @Html.Grid(Model.ContactApplicationConditionList).RowAttributes(row => new Hash(@class => row.Item.IsSatisfied ? "completeRow" : "incompleteRow")).Columns(c =>
        {
            c.For(a => string.Format("{0:dd/MM/yyyy}", a.DateRequested)).Named("Date Requested");
            c.For(a => string.Format("{0:dd/MM/yyyy}", a.DateDeadline)).Named("Deadline Date");
            c.For(a => string.Format("{0:dd/MM/yyyy}", a.DateReceived)).Named("Date Received");
            c.For(a => a.Comment).Named("Comment");
            c.For(a => a.ApplicationOfferCondition.Name).Named("Checklist type");
            c.For(a => @Html.Raw(String.Format("<a href=\"#?w=380\" onclick=\"$('body').data('contactApplicationConditionId', '{0}' );\" rel=\"checklistUpdatePopup\" class=\"popupWindow\">Update</a>", a.ContactApplicationConditionId))).Named("Update");
            c.Custom(



                @<text>
                    @using (Ajax.BeginForm("PostCheckListCompleted", "Home", new AjaxOptions  { HttpMethod = "Post" }))
                    {
                        @Html.CheckBox("checkListCompleted", item.IsSatisfied, new { onclick = "$(this).parent('form:first').submit();" })
                        <input type="hidden" name="contactApplicationId" value=@ViewBag.ApplicationId />      
                        <input type="hidden" name="contactApplicationConditionId" value="@item.ContactApplicationConditionId" />     
                    }
                </text>

            ).Named("Complete");
        }).Attributes(@cellpadding => "0", @cellspacing => "0", @class => "table_results")

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 14 сентября 2011

Вам необходимо добавить библиотеку jquery unobtrusive-ajax на свою страницу

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>

и изменить эту строку кода на

@using (Ajax.BeginForm("PostCheckListCompleted", "Home", new AjaxOptions  { HttpMethod = "Post", Url = Url.Action("PostCheckListCompleted") })) 

Проверьте также, хотите ли вы установить цель дляобратный вызов ajax, установка свойства UpdateTargetId для AjaxOptions

0 голосов
/ 15 сентября 2011

Вы ссылались на файлы сценариев, необходимые для ajax?

Microsoft.Ajax.js
MicrosoftMvc.Ajax.js

и, возможно, jquery, если требуется

...