【问题标题】:Ajax Action link behaves strangely when inside a Telerik MVC Grid在 Telerik MVC 网格中时,Ajax 操作链接行为异常
【发布时间】:2011-05-17 16:30:48
【问题描述】:

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 版本

【问题讨论】:

    标签: asp.net-mvc razor telerik


    【解决方案1】:

    我意识到这已经很晚了,但我遇到了一个非常相似的问题,我终于弄清楚了,并且在搜索结果中出现了这个链接。
    我试图将 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);
    }
    


    希望这对某人有所帮助。

    【讨论】:

      【解决方案2】:

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

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

      无论您包含哪个版本,您都会获得相同的行为吗?

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

      【讨论】:

      • 这个项目最近从 MVC2 转换到 MVC3,我忘了添加 jquery.unobtrusive 脚本:-{
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-24
      • 1970-01-01
      • 2013-09-22
      • 2011-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多