Сопоставьте имя параметра действия ASP.NET MVC с другим именем

Могу ли я сопоставить параметр действия с другим именем?

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

search?q=someQuery&in=location&for=x

Таким образом, «in» и «for» не могут использоваться в качестве имен параметров метода. Есть ли для этого встроенная функция или мне нужно создать связыватель модели?

Спасибо.


person elado    schedule 26.07.2009    source источник


Ответы (1)


Вы можете использовать нотацию '@', чтобы имя интерпретировалось буквально, а не зарезервированное слово в С#.

public ActionResult Test(string @for)
{
    var something = @for;
}
person womp    schedule 26.07.2009
comment
Здорово. Спасибо! Совершенно забыл об этом (например, @class в атрибутах html). Но как насчет сопоставления элемента запроса, например in, с параметром inLocation? Я мог бы просто создать атрибут ActionParameterNameAttribute с использованием, например: [ActionParameterName(in)] inLocation. Точно так же, как [ActionName] для действий. - person elado; 27.07.2009
comment
public ActionResult MyMethod([Bind(Prefix=in)] string inLocation) { ... } - person Levi; 27.07.2009
comment
@Arnis L. - Что не так с предложением? Переименование параметров, предложенное в комментарии elad.ossadon, — это как раз один из сценариев, для покрытия которых был разработан [Bind(Prefix=...)]. - person Levi; 27.07.2009
comment
Большое спасибо, действительно полезно. Я использовал это с большим успехом: [Bind(Prefix=Product.Brand)]int brandId - person jesperlind; 14.11.2009