2011-07-10 30 views
11

tôi tuyên bố một enum:Làm cách nào để sử dụng Enums trên trang Razor của tôi trong MVC3?

public enum HeightTypes{ Tall, Short} 

Bây giờ tôi muốn sử dụng nó trên trang dao cạo của tôi như thế này:

@if (Model.Meta.Height == HeightTypes.Tall) 

Nhưng có một vấn đề như tôi nhận được một lỗi. Có cách nào tôi có thể nói cho các trang dao cạo về enum của tôi?

+0

Vui lòng nêu cụ thể về lỗi. Thông điệp chính xác được sao chép nguyên văn từ trình biên dịch/IDE, tốt nhất là. –

Trả lời

16

Bạn có một lỗi trong khai enum (xóa các dấu ;):

public enum HeightTypes { Short = 0, Tall = 1 } 

sau đó kiểm tra sau đây nên làm việc:

@if (Model.Meta.Height == HeightTypes.Tall) 
{ 

} 

bạn chỉ cần phải chắc chắn rằng quan điểm của bạn là gõ mạnh mẽ và bạn đã đưa vào phạm vi không gian tên trong đó chiều cao enum được xác định:

@using SomeAppName.Models 
@model SomeViewModel 

hoặc tham khảo các enum như thế này:

@if (Model.Meta.Height == SomeAppName.Models.HeightTypes.Tall) 
{ 

} 

Tuy nhiên, để tránh làm điều này trong tất cả các quan điểm dao cạo của bạn đòi hỏi phải sử dụng enum này, nó là dễ dàng hơn để khai báo nó trong <namespaces> phần trong ~/Views/web.config:

<system.web.webPages.razor> 
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <pages pageBaseType="System.Web.Mvc.WebViewPage"> 
     <namespaces> 
     <add namespace="System.Web.Mvc" /> 
     <add namespace="System.Web.Mvc.Ajax" /> 
     <add namespace="System.Web.Mvc.Html" /> 
     <add namespace="System.Web.Routing" /> 
     <add namespace="SomeAppName.Models" /> 
     </namespaces> 
    </pages> 
</system.web.webPages.razor> 
+0

Xin lỗi tôi vừa sửa lỗi đó. Tôi đã bị lẫn lộn. Vấn đề tôi có thực sự là tôi nghĩ với MVC bởi vì quan điểm dao cạo của tôi không biết về không gian tên mà enum đang ở. – RichardA

+0

@Richard, vâng, bạn có thể thêm '@ using' vào đầu màn hình Razor của bạn. –

0

Bạn không cụ thể về ngoại lệ, vì vậy tôi đang đoán đây là vấn đề về không gian tên. Thêm

@using The.Namespace.Of.Your.Enum; 

ở trên cùng. Bạn cũng có thể xác định không gian tên để thêm tự động trong /Views/web.config nếu bạn đang sử dụng không gian tên mà rất nhiều:

<system.web.webPages.razor> 
    ... 
    <pages ...> 
     <namespaces> 
      <add namespace="System.Web" /> 
      ... 
      <add namespace="The.Namespace.Of.Your.Enum" /> 
10

Chỉ cần làm cho một sự khởi đầu đến kết thúc Ví dụ:

C# CS Trang

namespace MyProject.Enums 
{ 
    public enum CurveBasis 
    { 
     Aggregates, 
     Premium 
    } 
} 

Dao cạo Xem

@using MyProject.Enums 

<select id="dlCurveBasis"> 
    <option value="@CurveBasis.Aggregates">Aggregates</option> 
    <option value="@CurveBasis.Premium">Premium</option> 
</select> 
Các vấn đề liên quan