Может ли сайт ASP.NET MVC2 иметь дополнительный параметр enum route? Если да, можем ли мы установить это значение по умолчанию, если оно не указано?

я могу иметь маршрут как ...

routes.MapRoute(
    "Boundaries-Show",
    "Boundaries",
     new 
     {
         controller = "Boundaries", 
         action = "Show",
         locationType = UrlParameter.Optional
     });

Где метод действия ...

[HttpGet]
public ActionResult Show(int? aaa, int? bbb, LocationType locationType) { ... }

и если человек не предоставит значение для locationType .., то по умолчанию оно будет LocationType.Unknown

Возможно ли это?

Обновление № 1

Я убрал метод действия, чтобы он содержал ОДИН метод (только пока я не заработал). Теперь это выглядит так ...

[HttpGet]
public ActionResult Show(LocationType locationType = LocationType.Unknown) { .. }

.. и я получаю это сообщение об ошибке ...

  

Словарь параметров содержит   неверная запись для параметра   'locationType' для метода   «System.Web.Mvc.ActionResult   Show (MyProject.Core.LocationType) 'в   'MyProject.Controllers.GeoSpatialController.   Словарь содержит значение   введите 'System.Int32', но параметр   требует значения типа   'MyProject.Core.LocationType.   Имя параметра: параметры

Думает ли, что необязательный параметр маршрута LocationType - это int32, а не пользовательский Enum?

7 голосов | спросил Pure.Krome 5 PM00000060000004831 2010, 18:41:48

2 ответа


0

Вы можете указать значение по умолчанию, например, так:

public ActionResult Show(int? aaa, int? bbb, LocationType locationType = LocationType.Unknown) { ... }


UPDATE:

Или, если вы используете .NET 3.5:

public ActionResult Show(int? aaa, int? bbb, [DefaultValue(LocationType.Unknown)] LocationType locationType) { ... }


ОБНОВЛЕНИЕ 2:

public ActionResult Show(int? aaa, int? bbb, int locationType = 0) {
  var _locationType = (LocationType)locationType;
}

public enum LocationType {
    Unknown = 0,
    Something = 1
}
ответил Fabian 5 PM00000060000005231 2010, 18:44:52
0

Вы можете добавить атрибут DefaultValue в свой метод действия:

[HttpGet]
public ActionResult Show(int? aaa, int? bbb, [DefaultValue(LocationType.Unknown)]LocationType locationType) { ... }

или используйте необязательные параметры в зависимости от используемой языковой версии:

[HttpGet]
public ActionResult Show(int? aaa, int? bbb, LocationType locationType = LocationType.Default) { ... }
ответил nukefusion 5 PM00000060000005431 2010, 18:45:54

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132