在使用带有Razor视图引擎的三元组时遇到一些麻烦。
我的模型有一个字符串属性。如果该字符串属性为null,我想在视图中呈现null
。如果属性不为null,我希望它使用前导'
呈现属性值。
我该怎么做?
更新:抱歉,稍微改了一下问题。
答案 0 :(得分:11)
您应该只能使用标题建议的三元运算符:
@(string.IsNullOrEmpty(Model.Prop) ? "null" : "'" + Model.Prop + "'")
答案 1 :(得分:7)
假设您有一个名为Test
且具有First
和Last
属性的实体:
public class Test {
public string First { get; set; }
public string Last { get; set; }
}
您可以使用DisplayFormat.DataFormatString
和DisplayFormat.NullDisplayText
来达到您的目的:
public class Test {
[Display(Name = "First Name")]
[DisplayFormat(DataFormatString = "'{0}'", NullDisplayText = "'null'")]
public string First { get; set; }
[Display(Name = "Last Name")]
[DisplayFormat(DataFormatString = "'{0}'", NullDisplayText = "'null'")]
public string Last { get; set; }
}
在视野中:
@Html.DisplayFor(model => model.First)
@Html.DisplayFor(model => model.Last)
我也改变了答案:
[DisplayFormat(DataFormatString = "'{0}'", NullDisplayText = "null")]
答案 2 :(得分:4)
三元,循环,C#和东西让视图变得难看。
这就是视图模型的精确设计:
public class MyViewModel
{
[DisplayFormat(NullDisplayText = "null", DataFormatString = "'{0}'"]
public string MyProperty { get; set; }
}
然后在你的强类型视图中:
@model MyViewModel
...
@Html.DisplayFor(x => x.MyProperty)