У меня есть один из этих дней блока кода. Я должен это знать, но вместо этого попрошу немного помочь. У меня есть два пути:Строка запроса с нулевыми типами
/Login
/Login?wa=wsignin1.0&wtrealm=http://localhost/MyApp
Доступ метод действий для первого с HTTP GET возвращает страницу входа в систему, где-как второй делает некоторые вещи федеративной аутентификации. Я определил два метода контроллера:
public ActionResult Index();
public ActionResult Index(string wa);
Маршрутизация, конечно, не нравится, что, поскольку тип обнуляемым делает его неоднозначным. Как мне установить ограничение на выполнение только второго метода, если это значение существует в данных маршрута?
EDIT: Я временно решил проблему с помощью селектора действий. Это лучший подход?
public class QueryStringAttribute : ActionMethodSelectorAttribute
{
public ICollection<string> Keys { get; private set; }
public QueryStringAttribute(params string[] keys)
{
this.Keys = new ReadOnlyCollection<string>(keys);
}
public override bool IsValidForRequest(ControllerContext controllerContext, System.Reflection.MethodInfo methodInfo)
{
var requestKeys = controllerContext.HttpContext.Request.QueryString.AllKeys;
var result = Keys.Except(requestKeys, StringComparer.OrdinalIgnoreCase).Count() == 0;
return result;
}
}