2010-05-14 28 views
5

Tôi đang tăng tốc trên ASP.NET MVC và xem cách tôi xuất thông báo trong chế độ xem. Cách tốt nhất để làm điều gì đó như thế này? Người giúp đỡ? Kiểm soát? Hay đúng như vậy?Thực hành tốt nhất cho đầu ra có điều kiện trong ASP.NET MVC?

<% if (ViewData.ContainsKey("message") && !string.IsNullOrEmpty(ViewData["message"].ToString())) { %> 
    <div class="notice"> 
     <%= ViewData["message"] %> 
    </div> 
<% } %> 

Trả lời

5

Tôi sẽ sử dụng một helper html:

public static class HtmlExtensions 
{ 
    public static string GetMessage(this HtmlHelper htmlHelper) 
    { 
     var message = htmlHelper.ViewData["message"] as string; 
     if (string.IsNullOrEmpty(message)) 
     { 
      return string.Empty; 
     } 
     var builder = new TagBuilder("div"); 
     builder.AddCssClass("notice"); 
     builder.SetInnerText(message); 
     return builder.ToString(); 
    } 
} 

và trong giao diện:

<%= Html.GetMessage() %> 

Ghi chú: đừng quên html mã hóa giá trị của thông báo nếu bạn quyết định sử dụng của bạn mã theo cách của nó.

+0

Darin, Tôi thích cách tiếp cận này vì sẽ rất dễ dàng để luôn thêm <% = Html.GetMessage()%> vào bất kỳ chế độ xem nào theo mặc định và chỉ 'quên'. sau đó logic điều khiển có thể quyết định có thêm bất cứ thứ gì vào ViewData ["message"] hay không. ngay bây giờ, nếu chỉ có một cách để dễ dàng xác định khóa cho chế độ xem (không phải là 'thông báo'), thì đây sẽ là một trình trợ giúp nhỏ có khả năng mở rộng độc lập :) chỉnh sửa - tôi cho rằng tất nhiên là bổ sung tham số có thể được thêm vào helper để xác định thuộc tính đó - hoặc có cách 'tốt hơn' không ?? –

+0

Điều này có vẻ tuyệt vời, cảm ơn ví dụ. – RyanW

1

Tôi nghĩ rằng điều kiện như những gì bạn có là cách tiếp cận đơn giản nhất. Một điều khiển cảm thấy hơi "nặng nề" cho việc này. Có lẽ một phương pháp trợ giúp nếu bạn thấy mình lặp lại nó rất nhiều.

Các vấn đề liên quan