Ссылка Ajax Action ведет себя странно, когда внутри Telerik MVC Grid - PullRequest
1 голос
/ 17 мая 2011

A - бритва с сеткой Telerik MVC. В первом столбце есть ссылка для удаления записи. Ссылка является Ajax Actionlink.

@(
 Html.Telerik().Grid<QMS.Models.CustomerTableRow>(Model)
        .Name("CustomerTable")
        .Columns(c =>
        {
            c.Template(
                @<text>
                @Ajax.ActionLink("Delete","Delete", new { key = item.CustomerKey },new AjaxOptions{ Confirm="Delete this Customer?",UpdateTargetId = "CustomerTable", HttpMethod = "Delete"})
                </text>
                );
            c.Bound(col => col.FirstName);
            c.Bound(col => col.LastName);
            c.Bound(col => col.Email);
            c.Bound(col => col.HomePhone);
        })
        .Pageable()
        .Sortable()
        .Resizable(res => res.Columns(true))
        .Scrollable()
        )

//Action Method in view
 //[HttpDelete]  <-- can't have this or else a "Resource not found" error occurs
        public ActionResult Delete(String key)
        {
                repo.DeleteCustomer(key);
                return PartialView("CustomerTable", repo.GetCustomerTable());
        }

Некоторые странные вещи случаются, когда я нажимаю на ссылку «Удалить», которую я создаю в столбце шаблона. Во-первых, подтверждающее сообщение не появляется, но действие удаления все еще вызывается. Во-вторых, даже если у меня HttpMethod = "Delete", если я декорирую метод действия с помощью [HttpDelete], я получаю ошибку "ресурс не найден". Наконец, эта сетка находится в частичном представлении, и метод действия возвращает частичное представление после удаления, однако все форматирование потеряно, как если бы CSS-файла больше не было. Ничего из этого не происходит, если ссылка отображается за пределами сетки. Я использую версию 2011.1.315

Ответы [ 2 ]

1 голос
/ 25 июня 2015

Я понимаю, что уже довольно поздно, но у меня возникла очень похожая проблема, с которой я наконец-то разобрался, и эта ссылка появилась в результатах поиска.
Я пытался добавить Ajax.Actionlink кшаблон клиента для сетки MVC.Наконец-то обнаружил, что проблема связана с UpdateTargetID = "myElement". Ajax.ActionLink генерирует неэкранированный "#" для цели обновления.
Моя работа была:

columns.Bound(p => p.ID).Title("myTitle")
                            .ClientTemplate(Ajax.ActionLink("View", "myAction", "myController", new { myParam = "#=ID#" }, new AjaxOptions() { OnSuccess = "myJSFunction" }).ToHtmlString());


Тогда:

function myJSFunction(response) {
    $("#updateTargetElement").html(response);
}


Надеюсь, это кому-нибудь поможет.

0 голосов
/ 17 мая 2011

Просто любопытно, используете ли вы jQuery 1.6.1 (я полагаю, это самая последняя версия на данный момент) или 1.5.1, которую предоставляет Telerik?

Например, в моем приложении я использую @ Html.Telerik (). ScriptRegistrar (). JQuery (ложь) включать скрипты, необходимые Telerik, но не включать jQuery, чтобы я мог сам включить его и контролировать, какую версию он использует

У вас одинаковое поведение независимо от того, какую версию вы включаете?

Я предполагаю, что, поскольку он работает за пределами таблицы, вы ссылаетесь на jquery.unobtrusive-ajax.min.js.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...