Asp.net Mvc: фильтрует обнуляемый параметр - PullRequest
3 голосов
/ 01 сентября 2009

Я пытаюсь использовать обнуляемую дату и время в качестве параметра для фильтра действий, но он выдает следующую ошибку:

«Propertyname» не является допустимым аргументом именованного атрибута, поскольку это недопустимый тип параметра атрибута

Я думал, что быстрый Google решит эту проблему, но, к своему удивлению, я не смог найти много информации об этом.

Вот код моего фильтра.

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

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 02 сентября 2009

Здесь ошибка компилятора на MSDN .

Вы можете использовать только следующие типы в соответствии с Учебник атрибутов :

Параметры атрибута ограничены постоянные значения следующих Типы:

- 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

Что означает, что в вашем случае вы не можете использовать:

  1. Nullable Double.
  2. Обнуляемый DateTime.
  3. DateTime.

Я бы посоветовал использовать int или перечисление для Приоритета, так как приоритет не является хорошим кандидатом для того, чтобы быть двойником.

Вы можете обойти DateTime, изменив его тип на long и присвоив ему Ticks.
Но я сомневаюсь, что C # позволяет вам присвоить непостоянные значения для атрибутов при их применении (и новый DateTime (1234,5,6) .Ticks не является константой с этой точки зрения).

0 голосов
/ 01 сентября 2009

Я думаю, вам нужно вместо этого использовать строку и преобразовать ее в DateTime в вашем методе действия или в ViewModel и т. Д.

...