在Telerik MVC Grid中,Ajax Action链接表现得很奇怪

时间:2011-05-17 16:30:48

标签: asp.net-mvc razor telerik

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 =“删除”,如果我用[HttpDelete]装饰动作方法,我得到“资源未找到”错误。最后,此网格处于局部视图中,并且action方法在删除后返回partialview,但是所有格式都丢失了,就好像CSS文件不再存在一样。如果链接在网格外部呈现,则不会发生这种情况。我使用的是版本2011.1.315

2 个答案:

答案 0 :(得分:1)

我意识到这已经很晚了,但我遇到了一个非常类似的问题,我终于弄明白了,这个链接在搜索结果中出现了。
我试图将 Ajax.Actionlink 添加到MVC网格的客户端模板中。最后发现问题源于UpdateTargetID =&#34; myElement&#34;。 Ajax.ActionLink 会生成一个未转义的&#34;#&#34;用于更新目标。
我的工作是:

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);
}


希望这有助于某人。

答案 1 :(得分:0)

好奇,您使用的是jQuery 1.6.1(我相信这是目前最新版本)还是1.5.1版本的telerik提供的?

例如在我正在使用的应用程序中 @ Html.Telerik()。ScriptRegistrar()。jQuery的(假) 包括Telerik需要的脚本但不包含jQuery,以便我可以自己包含它并控制它使用的版本

无论您使用哪个版本,您都会得到相同的行为吗?

我假设因为它在网格之外工作,所以你引用了jquery.unobtrusive-ajax.min.js。