2009-08-31 4 views
3

내가 actionfilter에 대한 매개 변수로 입력 가능 날짜를 두 번을 사용하려고하지만 다음과 같은 오류주는 것 : Asp.net MVC가 : 널 (NULL) 매개 변수를 필터

'Propertyname' is not a valid named attribute argument because it is not a valid attribute parameter type

내가 빠른 구글이 그것을 해결할 것이라고 생각을하지만, 내 surpise에 나는 그것에 대한 많은 정보를 찾을 수 없었다.

다음은 내 필터 코드입니다.

public class AddToSitemap : ActionFilterAttribute 
{ 
    public string Changefreq { get; set; } 
    public DateTime? Lastmod { get; set; } 
    public double? Priority { get; set; } 
} 

미리 감사드립니다.

+1

MVC 프레임 워크가 클래스 이름을 올바르게 선택하기 위해 AddToSiteMapAttribute가 아니어야합니까? –

+0

사실 그것은 좋은 질문입니다. 내가 본 모든 예도 마찬가지입니다. 내 코드가 작동하여 이름에 Attribute를 추가해야하는지 확실하지 않은 것 같습니다. – Pickels

+0

필수 사항은 아니지만 전 세계적으로 허용되는 가이드 라인 및 규칙입니다. –

답변

2

the compiler error on the MSDN이다에서 날짜 시간에 그 변환 할 필요가 있다고 생각합니다.

Attributes Tutorial에 따라 다음과 같은 유형을 사용할 수 있습니다

  1. Null 허용 더블 : 사용할 수 없습니다 귀하의 경우를 의미

    Attribute parameters are restricted to constant values of the following types:

    - Simple types (bool, byte, char, short, int, long, float, and double) 
    - string 
    - System.Type 
    - enums 
    - object (The argument to an attribute parameter of type object must be a constant value of one of the above types.) 
    * One-dimensional arrays of any of the above types 
    

    합니다.

  2. Nullable DateTime.
  3. DateTime.

나는 우선 순위가 두 번을 beeing는 좋은 후보로 소리를하지 않는 한 우선 순위에 대한 INT 또는 열거를 사용하는 조언을 것입니다.

해결 방법 DateTime의 유형을 long으로 변경하고 그것에 틱을 할당하여 해결할 수 있습니다.
하지만 은 C#에서 속성을 적용 할 때 상수가 아닌 값을 할당 할 수 있는지 의심 스럽습니다. 새 DateTime (1234,5,6) .Ticks는 해당 관점에서 상수가 아닙니다.

+0

우수 답변! –

0

내가 대신 문자열을 사용하는 등 사용자의 액션 메소드 또는 뷰 모델, 여기에