Làm cách nào để tạo mẫu hiển thị để tôi có thể hiển thị một bool là Có hoặc Không phải là hộp kiểm? Sử dụng mvc3Làm cách nào để ghi đè lên DisplayFor boolean?
<%: Html.DisplayFor(model => model.SomeBoolean)%>
Làm cách nào để tạo mẫu hiển thị để tôi có thể hiển thị một bool là Có hoặc Không phải là hộp kiểm? Sử dụng mvc3Làm cách nào để ghi đè lên DisplayFor boolean?
<%: Html.DisplayFor(model => model.SomeBoolean)%>
Tôi phải tạo thứ gì đó tương tự để nó hiển thị "Sim" và "Não" (tiếng Bồ Đào Nha Có/Không). Tôi tạo ra các tập tin sau đây:
Views\Shared\DisplayTemplates\Boolean.ascx
Và thêm đoạn mã sau:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<dynamic>" %>
<%= (bool) ViewData.Model ? "Sim" : "Não" %>
Hope this helps!
EDIT Quên, theo quan điểm của bạn, chỉ cần gọi nó như vậy:
<%= Html.DisplayFor(i => item.Ativo) %>
EDIT 2 Đối với một nullable (? Bool), hãy thử này:
<%= (ViewData.Model == null) ? "NA" : (ViewData.Model == true) ? "Y" : "N"%>
EDIT 3 Sử dụng cú pháp Dao cạo (Views \ Shared \ DisplayTemplates \ Boolean.cshtml):
@{ Layout = null; }
@(ViewData.Model ? "Sim" : "Não")
bạn có thể mở rộng HtmlHelper cho bool.
và nhớ bạn phải sử dụng hướng YesNoExtensions không gian tên trên trang dao cạo. rem: chúng tôi có thể quá tải DisplayFor cho boolean với dấu hiệu chức năng thay đổi.
public namespace SampleExtensions
{
public static class YesNoExtensions
{
public static MvcHtmlString DisplayFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, bool flag = true)
{
object o = expression.Compile().Invoke(html.ViewData.Model);
if (o.GetType() == typeof(bool))
{
if ((bool)o)
return new MvcHtmlString("Yes");
else
return new MvcHtmlString("No");
}
return DisplayFor(html, expression);
}
}
}
và trang dao cạo.
<%@ import namespace='SampleExtensions' %>
<%: Html.DisplayFor(model => model.SomeBoolean, true)%>
thông số cuối cùng đúng là giả cho quyền chọn Hiển thịĐã bị quá tải bởi chúng tôi. Tôi hy vọng có ích.
tôi không thể tạo mẫu hiển thị mới được chia sẻ và chuyển giá trị chuỗi? –
có, bạn có thể làm điều đó. hãy nhớ, để đặt tên mẫu cho DisplayFor. nó sẽ hoạt động. –
Làm thế nào về chỉ điều này rất đơn giản:
@((bool)item.Ativo ? "Yes" : "No")
Đây là một bài cũ, nhưng tôi đã gặp khó khăn trong việc tìm kiếm một câu trả lời hiện tại.
Có phương pháp @HTML trong MVC 5, @Html.Display**Text**For(model => model.SomeBoolean)
.
Tôi phải thêm một diễn viên vào boolean như thế này: '<% = (bool) ViewData.Model? "Có": "Không"%> ' Cảm ơn, điều này đã hiệu quả! – xcer
cảm ơn mẹo @xcer, đã cập nhật mã ở trên. – mateuscb
Chỉ là một gợi ý: cố gắng tránh các boolean vô giá trị. Nhiều lần bool? = false là, đối với ứng dụng, giống như bool = false. Ngoài ra, nhiều lần người dùng cuối không thể phân biệt giữa giá trị null và giá trị sai (đối với kiểu dữ liệu boolean). Về cơ bản, nếu bạn đang sử dụng hộp kiểm để kiểm soát boolean của bạn, bỏ qua null. Nếu bạn cần ba trạng thái (null, true, false), bạn sẽ sử dụng một số loại dropdown hoặc một hộp kiểm ưa thích, đặc biệt chỉ ra sự vắng mặt của một giá trị! – tggm