2012-09-09 46 views
1

我嘗試定義差異PARAMS,但它不工作的行動:如何在不同參數的情況下定義動作? - asp.net mvc4

public class HomeController : Controller 
    { 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    public ActionResult Index(string name) 
    { 
     return new JsonResult(); 
    } 

    public ActionResult Index(string lastname) 
    { 
     return new JsonResult(); 
    } 

    public ActionResult Index(string name, string lastname) 
    { 
     return new JsonResult(); 
    } 
    public ActionResult Index(string id) 
    { 
     return new JsonResult(); 
    } 
} 

,但我得到的錯誤:

行動上控制器類型「的HomeController」「索引」的當前請求是下面的操作方法之間的曖昧....

編輯:

如果不可能,請建議最好方法來做到這一點。

感謝,

優素福

回答

1

您可以使用ActionNameAttribute屬性:

[ActionName("ActionName")] 

然後,你必須爲每個操作方法不同的名字。

+0

謝謝,yopu能舉些例子給我,我寫了呢? – Yosef

1

當他們響應相同類型的請求(GET,POST等)時,您不能有重載的操作方法。你應該有一個包含所有你需要的參數的公共方法。如果請求沒有提供,它們將爲空,您可以決定可以使用哪種超載。

對於這種單一的公共方法,您可以通過定義模型來利用默認的模型綁定。

public class IndexModel 
{ 
    public string Id { get; set;} 
    public string Name { get; set;} 
    public string LastName { get; set;} 
} 

這是你的控制器應如何樣子:

public class HomeController : Controller 
{ 
    public ActionResult Index(IndexModel model) 
    { 
     //do something here 
    } 
} 
1

這兩個不能住在一起是因爲編譯器無法區分它們。重命名它們或刪除一個,或者添加一個額外的參數。這對所有班級都是如此。

public ActionResult Index(string name) 
{ 
    return new JsonResult(); 
} 

public ActionResult Index(string lastname) 
{ 
    return new JsonResult(); 
} 

嘗試使用單一的方法使用默認參數:

public ActionResult Index(int? id, string name = null, string lastName = null) 
    { 
     if (id.HasValue) 
     { 
      return new JsonResult(); 
     } 

     if (name != null || lastName != null) 
     { 
      return new JsonResult(); 
     } 

     return View(); 
    } 

OR

public ActionResult Index(int id = 0, string name = null, string lastName = null) 
    { 
     if (id > 0) 
     { 
      return new JsonResult(); 
     } 

     if (name != null || lastName != null) 
     { 
      return new JsonResult(); 
     } 

     return View(); 
    } 
+0

所有操作只能得到http(就像web服務) – Yosef

相關問題