2010-03-22 45 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(); 
} 
相關問題