开发者

ASP.NET MVC Razor: Ternary

Having a little bit of trouble figuring out using开发者_开发技巧 a ternary with Razor view engine.

My model has a string property. If that string property is null, I want to render null in the view. If the property is not null, I want it to render the property value with a leading and trailing '.

How can I do this?

UPDATE: Sorry, changed question slightly.


You should just be able to use a ternary operator like the title suggests:

@(string.IsNullOrEmpty(Model.Prop) ? "null" : "'" + Model.Prop + "'")


Assume you have an entity named Test with the First and Last properties:

public class Test {

    public string First { get; set; }

    public string Last { get; set; }
}

You can use DisplayFormat.DataFormatString and DisplayFormat.NullDisplayText to achieve your purpose:

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; }
}

AND in view:

@Html.DisplayFor(model => model.First)

@Html.DisplayFor(model => model.Last)

I change the answer too:

[DisplayFormat(DataFormatString = "'{0}'", NullDisplayText = "null")]


Ternary, loops, C# and stuff makes views ugly.

That's what view models are exactly designed to do:

public class MyViewModel
{
    [DisplayFormat(NullDisplayText = "null", DataFormatString = "'{0}'"]
    public string MyProperty { get; set; }
}

and then in your strongly typed view simply:

@model MyViewModel
...
@Html.DisplayFor(x => x.MyProperty)
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜