asp.net-mvc – 使用Razor,如何使所有“bool?”属性显示为是/否/未设置在详细信息页面上?

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – 使用Razor,如何使所有“bool?”属性显示为是/否/未设置在详细信息页面上?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > Help with c# and bool on asp.net mvc3
这是我的页面代码到目前为止
@model TennisClub.Models.ClubMember
@{
    ViewBag.Title = "Details";
}
<h2>
    Details
</h2>
<fieldset>
    <legend>ClubMember</legend>
    @Html.DisplayForModel()
</fieldset>
<p>
    @Html.ActionLink("Edit","Edit",new { id = Model.Id }) |
    @Html.ActionLink("Back to List","Index")
</p>@H_404_4@ 
 

对于我的模型中的所有可空的布尔(bool?),这将显示一个带有未设置,True或False的灰色选择列表.我希望它只是纯文本:不设置,是或否.

如何最容易地实现这一点?我希望这种风格在我的网站上是全球性的.

编辑

只是在每个Mark的答案中创建一个模板,但是细节页面看起来完全一样.

我创建了一个bool.cshtml文件并将其放在以下文件夹中:

[ProjectFolder]/Views/Shared/DisplayTemplates

这是我现在为我的bool.cshtml模板所做的:

@model bool?

@if (Model == null)
{
    <text>Not Set</text>
}
else
{
    if (Model.Value)
    {
        <text>Yes</text>
    }
    else
    {
        <text>No</text>
    }
}@H_404_4@ 
 

这完全不对我的细节页有任何影响.

任何想法我在做错什么?

编辑2

这是我的模型类:

public class ClubMember
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string EmailAddress { get; set; }
    public string PhoneNumber { get; set; }
    public string PhoneType { get; set; }
    public bool? CanPlayDays { get; set; }
    public bool? CanPlayEvenings { get; set; }
    public bool? CanPlayWeekends { get; set; }
    public string Role { get; set; }
}@H_404_4@

解决方法

您将要覆盖默认模板.简而言之,在您的视图文件夹下,您将创建一个“DisplayTemplates”文件夹和“EditorTemplates”文件夹.一旦你有这个,你可以创建一个Boolean.cshtml文件在每一个模型是bool?那么你可以做任何你想要的,只要显示选项去.这会改变怎么样的bool?模型字段渲染.

这是一个博客文章,我多次提到,以帮助我弄清楚. http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-3-default-templates.html

更新:一个小心谨慎,请记住处理null的情况.过去我忘了这样做,咬我了

猜你在找的asp.Net相关文章