我有一个带回发动作的控制器:
[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
答案 0 :(得分:6)
您可以保留签名并只更改方法的名称,但通过指定ActionNameAttribute
使用相同的操作名称。
例如
[HttpGet]
public ActionResult Foo(FooModel model)
{
// do stuff
}
[HttpPost]
[ActionName("Foo")]
public ActionResult FooPost(FooModel model)
{
// do stuff
}
方法名称不同,但两者的MVC操作相同:“Foo”。