参见英文答案 >
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>
对于我的模型中的所有可空的布尔(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> } }
这完全不对我的细节页有任何影响.
任何想法我在做错什么?
编辑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; } }
解决方法
您将要覆盖默认模板.简而言之,在您的视图文件夹下,您将创建一个“DisplayTemplates”文件夹和“EditorTemplates”文件夹.一旦你有这个,你可以创建一个Boolean.cshtml文件在每一个模型是bool?那么你可以做任何你想要的,只要显示选项去.这会改变怎么样的bool?模型字段渲染.
这是一个博客文章,我多次提到,以帮助我弄清楚. http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-3-default-templates.html
更新:一个小心谨慎,请记住处理null的情况.过去我忘了这样做,咬我了