Передача аргумента в действия контроллера - PullRequest
1 голос
/ 19 сентября 2011

У меня есть контроллер с действием обратной передачи:

[HttpPost]
public ActionResult test(string x) { ... }

, и я хотел добавить действие GET с той же подписью:

public ActionResult test(string y) { ... }

, но компилятор выводит:

Type 'TestController' already defines a member called 'test' with 
the same parameter types

, поэтому я подумал изменить подпись:

public ActionResult test(RouteValueDictionary args) { ... }

и назвать ее так:

@{
    RouteValueDictionary args = new RouteValueDictionary(
        new { y = "test" }
    );
}
@Html.Action("test", "TestController", args)

, но контроллер получает args как ноль.ясно, я не понимаю, как это должно работать.Я знаю, что мог бы просто переименовать действие, но я хотел бы знать, как объявить его так, чтобы встретился мой словарь.

TIA - e

1 Ответ

6 голосов
/ 19 сентября 2011

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

Например

[HttpGet]
public ActionResult Foo(FooModel model)
{
   // do stuff
}

[HttpPost]
[ActionName("Foo")]
public ActionResult FooPost(FooModel model)
{
   // do stuff
}

Имена методов разные, но действие MVC одинаково для обоих: "Foo".

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