2011-03-15 116 views
5

我創建一個asp.net MVC的網站Asp.Net MVC - 載動作方法

我的問題是如何實現的過載動作的方法

控制器


    public ActionResult Index(int id) 
    { 
     //code 
     return View(model); 
    } 

    public ActionResult Index() 
    { 
     //code 
     return View(model); 
    } 

查看


    <div id="menucontainer"> 
      <ul id="menu">   
        <li><%= Html.ActionLink("Home", "Index", "Home")%></li> 
        <%if (Page.User.Identity.IsAuthenticated) 
         {%> 
        <li><%= Html.ActionLink("Profilo", "Index", "Account")%></li> 
        <%} %> 
        <li><%= Html.ActionLink("About", "About", "Home")%></li> 
       </ul> 
      </div> 

用戶控件(ascx)插入在視圖中。此用戶控件列出了配置文件(視圖)的朋友


    <td> 
      <%= Html.ActionLink(Html.Encode(item.Nominativo), "Index", "Account", new { id = item.IdAccount }, null)%> 
     </td> 

全球ASAX


    public static void RegisterRoutes(RouteCollection routes) 
     { 
      routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

      routes.MapRoute(
       "Default", 
       "{controller}/{action}/{id}", 
       new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
      ); 
     } 

當我點擊查看操作指數,返回錯誤「無法找到資源... ECC ..「

我發現這個問題的幾個答案(使用屬性ecc ..),但不工作。

有一種方法可以做到這一點?我必須在全局asax中添加maproute?

非常感謝您的答覆

+0

的可能重複(http://stackoverflow.com/questions/436866/can-you-overload-controller-methods-in-asp-net-mvc) – Marijn 2012-06-08 14:09:57

回答

10

你需要消除歧義的ActionMethodSelector屬性來裝飾都超載。 ASP.NET MVC不知道如何選擇適當的過載。

一種解決方法是在處理同樣的方法兩個動作:?你可以重載在ASP.Net MVC控制器方法]

public ActionResult Index(int? id) { 

    if (id.HasValue) { 
     // id present 
    } else { 
     // id not present 
    } 
} 
+0

非常感謝,我試着讓你知道。 – 2011-03-15 12:07:13

+0

使用與可工作的可空參數相同的方法!現在我嘗試mvcCodeRouting .. – 2011-03-15 21:49:28

+0

當我添加mvccoderouting的引用,出現警告圖標。我用Visual Studio 2008使用asp.net mvc 2。 – 2011-03-15 22:13:02