在JavaScript函数中使用HtmlHelper是否有正确的方法?
我正在写一个jQuery网格插件,并且我设计了它,因此它可以独立于所使用的语言工作。以下是我的插件是如何分配的基本知识:在JavaScript函数中使用HtmlHelper是否有正确的方法?
$("#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
的)。我不想在Controller的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);
}
等各个回调,我只是觉得,并表示要编辑的ID的data
更换X
。
我知道这是不好的和将尽快打破控制器或动作中有一个X。那我该如何正确地做到这一点?
什么:
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)
我认为你的意思是'href'而不是'id'?这个答案有以下几点:'anchor.attr('href',anchor.attr(“href”)+“/”+ data)'。 – GenericTypeTea 2010-09-04 14:53:46
哦?从您的问题中的代码看来,您只是替换了* id *属性的值。但无论如何,我很高兴能够提供帮助。 :) – 2010-09-04 15:10:17
它是一个ActionLink,所以id是控制器操作中属性的名称,而不是元素的ID。 – GenericTypeTea 2010-09-04 16:01:13
我怀疑这是你正在寻找的答案,但你能不能只选择“值X“碰撞实际上不可能?即%#$ PLACEHOLDER $#%之类的? – 2010-09-04 14:10:51