Я пишу плагин сетки jQuery, и я разработал его так, чтобы он работал независимо от используемого языка. Ниже основы того, как назначен мой плагин:Есть ли правильный способ использования HtmlHelper в функции JavaScript?
$("#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
). Я не хочу возвращать HTML в свой ответ JSON от Контроллера, потому что это лишние накладные расходы.
Есть ли какой-либо хороший способ, я могу создать эти действия ссылки на лету? В настоящее время, чтобы она работала, у меня есть эта невероятно неприятный метод:
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
, который представляет идентификатор для редактирования.
Я знаю, что это плохо и сломается как только контроллер или действие имеет X в нем. Итак, как я могу это сделать правильно?
Я сомневаюсь, что это ответ, который вы ищете, но вы не могли бы просто выбрать значение " X ", для которых столкновения практически невозможны? т. е.% # $ PLACEHOLDER $ #% или тому подобное? –