Вы можете попробовать JSON-кодировку:
<%= gridColumns.Add(
grid.Column(
"CarrierName",
"CarrierName",
format: (item) => new HtmlString("<a src='#' id='test' onclick='alert(" + Json.Encode(item.CarrierName) + ");'>" + Html.Encode(item.CarrierName) + "</a>")
))
%>
Но я бы постарался избежать этого супа тегов, написав собственный HTML-помощник, который сгенерирует якорь:
public static class HtmlExtensions
{
public static IHtmlString Link(this HtmlHelper htmlHelper, MyViewModel item)
{
var anchor = new TagBuilder("a");
anchor.AddCssClass("test");
anchor.Attributes["src"] = "#";
anchor.Attributes["onclick"] = string.Format(
"alert({0});", Json.Encode(item.CarrierName)
);
anchor.SetInnerText(item.CarrierName);
return new HtmlString(anchor.ToString());
}
}
изатем:
grid.Columns(
grid.Column(
"CarrierName",
"CarrierName",
format: item => Html.Link((MyViewModel)item.Value)
)
)