2010-03-22 59 views
1

我有2个动作两个控制器以相同PARAMS

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

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

但它是因为相同的参数的误差,但我需要只有一个参数。首先我打电话给page/action/id,然后用id和上传的文件提交它,但是我使用request.files [0]访问文件。那么控制器和相同参数的解决方案是什么?我看到只在一个控制器中声明FilesAdd(int?id)

回答

1

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

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

因为他上传一个文件,'HttpPostedFileBase name'参数会更合适。 – LukLed 2010-03-22 10:01:34

+1

对于我来说,添加一个永远不会使用的冗余参数会让我觉得有些ha ha。 – 2010-03-22 11:54:18

0

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

// Works under MVC 2.0 
<% using (Html.BeginForm("action", "controller", FormMethod.Post)) { %> 
// code 
<% } %> 
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(); 
} 
相关问题