条件付きで CSS クラスを設定したり、特定の Web グリッド列の文字列を html にエンコードしたりすることはできますか? 列で format: を使用して項目にスパン タグを追加できましたが、今度は、かみそりビューのヘルパー関数またはコントローラー/モデルからのブール式に基づいて、スパン タグにクラスを追加する必要があります。私はこれを 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;
}
フィードバックが完了すると条件付きで機能するプレゼンテーションは次のとおりです。
更新: MvcHtmlString を返すという Zach からのガイダンスの後、WebGrid 列で上記のヘルパー メソッドを使用できない問題が発生しました。以下に正しい構文を示します。
grid.Column(columnName: "FeedBack", format: (item) => CheckFeedBack(item.FeedBack), style: "webGridAlignment")