Showing Yes/No instead of checkbox in the View of

2019-04-28 19:49发布

问题:

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,

回答1:

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.



回答2:

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

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


回答3:

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


回答4:

Change

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

to

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

This is the simplest way to achieve what your requirements.