代码之家  ›  专栏  ›  技术社区  ›  djdd87

在JavaScript函数中使用HtmlHelper有正确的方法吗?

  •  2
  • djdd87  · 技术社区  · 14 年前

    我正在编写一个jQuery网格插件,我设计它使它独立于所使用的语言工作。以下是如何分配插件的基础知识:

    $("#grid").grid({
        enablePager: true,
        dataPath: "Movement/GetGridPage",
        columns: {
            Edit: { title: "", cellCallback: editButtonCallBack, width:"16px" },
            DocketNumber: { title: "Docket #" },
            SiteName: { title: "Site" },
            SiteAddress: { title: "Address" },
            SiteRegion: { title: "Region" },
        },
        cssTable: "table",
        cssAltRow: "altRow"
    });
    

    因为我想执行一些更高级的数据处理,而不仅仅是填充 <td> 通过一些文本,我添加了一个回调处理程序( cellCallback

    var dataItem = currentRow[columnName];
    if (columnSetting.cellCallback) {
        $td.html(columnSetting.cellCallback(dataItem));
    }
    else {
        $td.html(dataItem);
    }
    

    我遇到的问题是,我的编辑列需要包含一些 ImageActionLink ActionLink ). 我不想在控制器的JSON响应中返回HTML,因为这是不必要的开销。

    function editButtonCallBack(data)
    {
        var link = '<%= Html.ImageActionLink("Movement", "Edit", new { id = "X" }, 
            Url.Content("~/Content/Icons/Edit.png"), "Edit", null, null) %>';
        return link.replace("X", data);
    }
    

    所以在每次回调中,我只是找到并替换 X data 表示要编辑的ID的。

    坏的 在里面。那我该怎么做呢?

    1 回复  |  直到 14 年前
        1
  •  1
  •   Kirk Woll    14 年前

    关于:

    function editButtonCallBack(data)
    {
        var link = '<%= Html.ImageActionLink("Movement", "Edit", null, 
            Url.Content("~/Content/Icons/Edit.png"), "Edit", null, null) %>';
    
        var element = $('<div>' + link + '</div>');
        element.find('a').attr('id', data)
        return element.html();
    }
    

    这至少会对该特定属性执行替换,而不是对整个HTML块执行替换。(用“<div></div>”包围,因为html()只获取 内部的 HTML。)