【发布时间】:2012-10-24 13:36:27
【问题描述】:
是否可以有条件地为某个 Web 网格列设置 CSS 类或将字符串编码为 html?我能够使用格式将跨度标签附加到项目:在列中,但现在我需要基于剃刀视图中的辅助函数或控制器/模型中的布尔表达式向跨度标签添加一个类。 我不想用 JS 做这个,C# 就足够了。
这是我在视图模型中尝试过的:
@grid.GetHtml(
headerStyle:"reviewGridHeader",
columns: grid.Columns(
...[other columns]...
grid.Column(columnName: "FeedBack", format: @<span>@CheckFeedBack(item.FeedBack)</span>)
))
视图模型中的辅助函数(拆分和比较字符串):
static string CheckFeedBack(string item) {
String[] feedbacks = System.Text.RegularExpressions.Regex.Split(item, "of");
//if feedback complete
if((Convert.ToInt32(feedbacks[0]) == (Convert.ToInt32(feedbacks[1]))))
{
string newFeedback = @"<span class=""feedBackComplete"">"+ item +"</span>";
string encodedFeedback = System.Web.HttpUtility.HtmlEncode(newFeedback);
return encodedFeedback;
}
return item;
}
这是演示文稿,在反馈完成后有条件地起作用:
更新:在 Zach 提供返回 MvcHtmlString 的指导后,我无法在 WebGrid 列中使用上述辅助方法时遇到了一些问题。下面显示了正确的语法:
grid.Column(columnName: "FeedBack", format: (item) => CheckFeedBack(item.FeedBack), style: "webGridAlignment")
【问题讨论】:
-
尝试使用 MvcHtmlString.Create
-
你的分身得到了最佳答案
标签: c# asp.net-mvc asp.net-mvc-3 razor encoding