2016-06-30 5 views
0

В приложении MVC Текущий маршрут Config является:Как Отклонить Получить метод, когда QueryString передается

routes.MapRoute(
    "PaymentInformation", 
    "PaymentInformation.aspx/{resNum}", 
    new { controller = "Reservation", action = "Edit", resNum = UrlParameter.Optional } 
); 

Он вызывает нижеуказанным метод, когда мы попали этот URL: https://www.example.com/PaymentInformation.aspx

HttpGet] 
[ValidateRequest(true)] 
public ActionResult Edit(string resNum) 
{ 
    ReservationPresenter reservationPresenter = new ReservationPresenter(); 
    return View(reservationPresenter); 
} 

То, что я хочу заключается в том, что когда Querystring передается (в GET-методе), то тот же метод выше/действие выше не следует называть, и я просто хочу показать сообщение.

URL-адрес с QueryString должен быть таким: https://www.example.com/PaymentInformation.aspx?xyz

Может понравиться кто-нибудь предложить мне, что будет MapRoute в Route Config.

В том случае, если мы хотим, чтобы запрос с конфиденциальной информацией, отправляемой по методу GET, был отклонен приложением.

+1

Если вы не хотите, чтобы метод был удален, удалите '{resNum}' из маршрута и сделайте метод 'public ActionResult Edit()' –

ответ

0

Я не думаю, что это так, вы должны идти, но если это действительно то, что вы хотите, попробуйте следующее:

1) Создать класс IRouteConstraint и реализовать его, что-то вроде этого:

public class NonQueryStringRouteConstraint : IRouteConstraint { 
    public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection) { 
     return httpContext.Request.QueryString.Count == 0; 
    } 
} 

2) Добавить ограничение на маршрут:

routes.MapRoute(
    "PaymentInformation", 
    "PaymentInformation.aspx/{resNum}", 
    new { controller = "Reservation", action = "Edit", resNum = UrlParameter.Optional }, 
    new { resNum = new NonQueryStringRouteConstraint() } 
); 

Разум вы, хотя, NonQueryStringRouteConstraint также будет выполняться при генерации URL, так что вы можете че ck параметр routeDirection, если необходимо.

Смежные вопросы