2011-03-15 81 views
5

que creó un sitio web asp.net mvcAsp.Net MVC - Sobrecarga método Acción

Mi problema es el método de acción sobrecarga de cómo implementar

controlador


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

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

Ver


    <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> 

Usercontrol (ascx) insertado en la Vista. Este usercontrol lista los amigos del perfil (ver)


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

asax Global


    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 } 
      ); 
     } 

cuando hago clic en el índice de acciones de la vista, devolverá el error "No se puede encontrar el recurso ... ecc .. "

Encontré varias respuestas para este problema (usando el atributo ecc ..) pero no funciona.

¿Hay una forma de hacerlo? Debo agregar un maproute en un asax global?

muchas gracias por sus respuestas

+0

posible duplicado de (http://stackoverflow.com/questions/436866/can-you-overload-controller-methods-in-asp-net-mvc) – Marijn

Respuesta

10

lo necesario para decorar tanto sobrecargas con un atributo ActionMethodSelector para la desambiguación. ASP.NET MVC no sabe cómo seleccionar la sobrecarga adecuada.

Una solución consiste en manejar tanto las acciones en el mismo método: [? ¿Se puede sobrecargar los métodos de controlador en ASP.Net MVC]

public ActionResult Index(int? id) { 

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

muchas gracias, lo intento y le hago saber. –

+0

usando el mismo método con parámetro que se puede nulos que funciona !! Ahora intento mvcCodeRouting .. –

+0

Cuando agrego referencia de mvccoderouting, aparece el icono de advertencia. Utilizo asp.net mvc 2 con visual studio 2008. –

Cuestiones relacionadas