C# 有条件地向web网格列项添加CSS类

C# 有条件地向web网格列项添加CSS类,c#,asp.net-mvc,asp.net-mvc-3,razor,encoding,C#,Asp.net Mvc,Asp.net Mvc 3,Razor,Encoding,是否可以有条件地为某个web网格列设置CSS类或将字符串编码为html?我能够使用列中的format:将span标记附加到项目中,但是现在我需要基于razor视图中的helper函数或控制器/模型中的bool表达式向span标记添加一个类我不想用JS做这件事,C#应该足够了 以下是我在视图模型中尝试的内容: @grid.GetHtml( headerStyle:"reviewGridHeader", columns: grid.Columns( ...[other colum

是否可以有条件地为某个web网格列设置CSS类或将字符串编码为html?我能够使用列中的format:将span标记附加到项目中,但是现在我需要基于razor视图中的helper函数或控制器/模型中的bool表达式向span标记添加一个类我不想用JS做这件事,C#应该足够了

以下是我在视图模型中尝试的内容:

 @grid.GetHtml(
 headerStyle:"reviewGridHeader",
    columns: grid.Columns(
    ...[other columns]...
    grid.Column(columnName: "FeedBack", format: @<span>@CheckFeedBack(item.FeedBack)</span>)
))

您必须返回html而不是字符串。。。对于这种情况,可以在视图中使用MvcHtmlString和justraw

static System.Web.Mvc.MvcHtmlString 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>";

            return MvcHtmlString.Create(newFeedback);
        }
        return MvcHtmlString.Create(item);
    }
static System.Web.Mvc.MvcHtmlString检查反馈(字符串项){
String[]feedbacks=System.Text.RegularExpressions.Regex.Split(项目“of”);
//如果反馈完成
if((Convert.ToInt32(反馈[0])==(Convert.ToInt32(反馈[1]))
{
字符串newFeedback=@“+项+”;
返回MvcHtmlString.Create(newFeedback);
}
返回MvcHtmlString.Create(item);
}

尝试使用MvcHtmlString.Createyour doppelganger获得了最佳答案,因此这确实将字符串转换为html格式,但它仍然通过Webgrid显示为原始内部文本。正如您可以从我的网格视图中看到的,我已经有了一个span:format:@@CheckFeedBack(…)。这会导致问题吗?在format属性中是否可以只使用helper方法?为清晰起见,我希望跨距以html元素的形式呈现,而不仅仅是编码。抱歉,使用MvcHtmlString时不需要编码任何内容,请检查代码,我将其修复,因此在视图中,只需调用没有跨距的帮助器,就可以正常工作,并在网格
grid.Column(columnName:“FeedBack”,format:@CheckFeedBack)之外对其进行测试(item.FeedBack))
我尝试在“format:”属性中使用helper函数时出错:“名称'item'在当前上下文中不存在;”我尝试了@CheckFeedBack(@data.FeedBack,item.FeedBack,item:@item.FeedBack)等…我的WebGrid数据源称为“data”,它来自ViewBag。
grid.Column(columnName: "FeedBack", format: (item) => CheckFeedBack(item.FeedBack), style: "webGridAlignment")
static System.Web.Mvc.MvcHtmlString 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>";

            return MvcHtmlString.Create(newFeedback);
        }
        return MvcHtmlString.Create(item);
    }