是否可以为某个 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")