Ahmed
Ahmed

Reputation: 15059

Showing Yes/No instead of checkbox in the View of ASP.Net MVC

I am very new to ASP.Net / MVC . I have created a View that I am populating from a model. I am creating a rows for each item in the model to show their properties/attributes of model item.

One of the member is a bool , name is Staged. In the View I want to display it as Yes if true or No if false. The user will only be able to read it, so simple text Yes/No shall be sufficient.

I am using the following code in the cshtml

    <td>
        @Html.DisplayFor(modelItem => item.Staged)         
   </td>

This however shows a checkbox in the place, how can I show it as Yes/No ?

Thanks,

Upvotes: 6

Views: 8671

Answers (4)

Imran
Imran

Reputation: 504

Change

    @Html.DisplayFor(modelItem => item.Staged)         

to

    @(item.Staged?"Yes":"No")         

This is the simplest way to achieve what your requirements.

Upvotes: 4

hutchonoid
hutchonoid

Reputation: 33306

You could use a custom html helper extension method like this:

@Html.YesNo(item.Staged)

Here is the code for this:

public static MvcHtmlString YesNo(this HtmlHelper htmlHelper, bool yesNo)
{
    var text = yesNo ? "Yes" : "No";
    return new MvcHtmlString(text);
}

This way you could re-use it throughout the site with a single line of Razor code.

Upvotes: 15

Scottie
Scottie

Reputation: 11308

In the model, you would need to make a new property that does something like this...

public string ItemStagedYesNo = (item.Staged) ? "Yes" : "No";

then in the view, do

@Html.DisplayFor(modelItem => ItemStagedYesNo);

Upvotes: 3

Murali Murugesan
Murali Murugesan

Reputation: 22619

use Html.Raw and render the string conditionally based on model value true/false

 <td>
      @Html.Raw((Model.Staged)?"Yes":"No")     
 </td>

Upvotes: 7

Related Questions