Как отличить метод действия mvc без параметров от строковых параметров? - PullRequest
0 голосов
/ 22 мая 2011

Сегодня мне было трудно обнаружить разницу между двумя методами действий MVC.

Моя область регистрации:

  public override void RegisterArea(AreaRegistrationContext context)
  {
     // My test route.
     context.MapRoute(
         "testRoute",
         "Test/{action}",
         new { controller = "Test", action = "Index" }
     );
  }

И два метода, которые отличаются от обоих используемых http-методови параметр.

  [HttpPost]
  public ActionResult Test(TestModel model)
  {
     return View("Confirm", model);
  }

  [HttpGet]
  public ActionResult Test(string title)
  {
     Response.Write(title);
     Response.End();

     return null;
  }

Не обращая внимания на метод http, он всегда будет отображать второй метод Test ().Даже если параметр заголовка не указан (обычно это строка запроса / Test / Test /? Title = test).Возможно, потому что строка является ссылочным типом и может быть нулевой.

Но как преодолеть эту проблему?Как сделать разницу между этими методами?

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

1 Ответ

1 голос
/ 22 мая 2011

Я следую этой подписи, в основном всегда использую подпись метода 'GET' с моделью в качестве последнего параметра.

[HttpPost]
public ActionResult Test(string title, TestModel model)

Кстати, я никогда не видел поведение, о котором вы упоминали.Поэтому я сомневаюсь, что это проблема MVC, а не что-то в вашей конфигурации.Методы [HttpGet] никогда не запускаются методом POST.Действительно ли этот метод опубликован (проверьте свойство Request вашего ControllerContext).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...