我有一个具有回发操作的控制器:

[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

最佳答案

您可以保留签名,仅更改方法的名称,但是通过指定ActionNameAttribute使用相同的操作名称。

例如

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

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


方法名称不同,但是两者的MVC操作相同:“ Foo”。

关于c# - 传递给 Controller ​​ Action 的参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7466550/

10-17 01:18