两个具有相同参数的控制器

时间:2010-03-22 09:53:12

标签: asp.net-mvc parameters controller

我有2个动作

public ActionResult FilesAdd(int id)
    {
        FillParentMenuDDL(id);
        return View();
    }

    [HttpPost]
    public ActionResult FilesAdd(int id)
    {
        //some logic...
        FillParentMenuDDL(id);
        return View();
    }

但由于相同的参数,它是错误的,但我只需要一个参数。首先我调用页面/动作/ id然后我提交它例如id和上传文件,但我使用request.files [0]访问文件。那么控制器和相同参数的解决方案是什么?我看到只在一个控制器中声明FilesAdd(int?id)

3 个答案:

答案 0 :(得分:3)

.Net MVC为此目的有一个ActionNameAttribute。将第二个操作重命名为FilesAddPost,然后使用ActionNameAttribute("FilesAdd")

public ActionResult FilesAdd(int id)
{
    FillParentMenuDDL(id);
    return View();
}

[HttpPost]
[ActionName("FilesAdd")]
public ActionResult FilesAddPost(int id)
{
    //some logic...
    FillParentMenuDDL(id);
    return View();
}

答案 1 :(得分:1)

将一个(未使用的)表单参数添加到POST操作中。这将使方法签名不同。

[HttpPost]
public ActionResult FilesAdd(int id, FormCollection form)
{
    //some logic...
    FillParentMenuDDL(id);
    return View();
}

答案 2 :(得分:0)

您可以控制提交表单的操作,但不必执行相同的操作。

// Works under MVC 2.0 
<% using (Html.BeginForm("action", "controller", FormMethod.Post)) { %> 
// code
<% } %>