thể trùng lặp:
Why does my .NET Attribute not perform an action?C# thực thi mã bên thuộc tính tùy chỉnh
Hi,
này có thể soundlike một câu hỏi rất ngớ ngẩn và tôi không biết những gì có thể ở đây là tất cả hướng dẫn "thuộc tính tùy chỉnh" trên mạng khá giống nhau và chúng không giải quyết những gì tôi muốn làm. Tôi đã nhìn thấy một số mã ra có mã được viết bên trong các lớp thuộc tính, ví dụ: Logging with ASP.NET MVC Action Filters và tôi tự hỏi làm thế nào mã này được bao giờ thực hiện.
Nếu tôi có ví dụ đoạn mã sau:
public class Test
{
[RestrictedAttribute("RegisteredMember")]
public void DoSomething()
{
//this code can only be executed if the logged-in user
//is a member of the RegisteredMember group
}
}
Sau đó, tùy chỉnh thuộc tính RestrictedAttribute sẽ là một cái gì đó như thế này:
[AttributeUsage(AttributeTargets.Method)]
public class RestrictedAttribute : System.Attribute
{
/// <summary>
/// Make this code restricted to users with a required role
/// </summary>
/// <param name="requiredRole">The role required to execute this method</param>
public RestrictedAttribute(string requiredRole)
{
//validate if member is in role, else throw exception
throw new MemberNotInRoleException(requiredRole);
}
public new string ToString() {
return "Access needs to be granted";
}
}
Bây giờ vấn đề là tôi không thể có được MemberNotInRoleException được ném khi tôi thực thi phương thức Test.DoSomething().
Có lẽ tôi chỉ thiếu toàn bộ khái niệm thuộc tính tùy chỉnh, vui lòng giải thích.
Dupe: http://stackoverflow.com/questions/1164978/c-attribute-actions-and-instance-values –
Bạn cần kế thừa thuộc tính của mình từ ActionFilterAttribute và ghi đè phương thức OnActionExecuting để làm cho nó hoạt động trong MVC . –
Tôi không nghĩ rằng đây là một bản dupe chính xác, vì đó là hành vi MCV đang giải quyết vấn đề, tham chiếu của Mehrdad chỉ định các thuộc tính trực tiếp và là một cuộc gọi tốt, nhưng có một sắc thái ở đây có thể giúp người dùng MVC cố gắng giải quyết các mối quan tâm trong các giải pháp của họ, chẳng hạn như xác thực và tuần tự hóa JSON/XML. –