2011-03-15 2 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> 

보기에 Usercontrol (ascx)이 삽입되었습니다. 이 UserControl을 프로파일 (보기)의 친구


    <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

답변

10

당신은 모호성에 대한 ActionMethodSelector 속성으로 모두 과부하를 장식해야합니다. ASP.NET MVC는 적절한 오버로드를 선택하는 방법을 알지 못합니다. [? 당신이 ASP.Net MVC에서 컨트롤러 메소드를 오버로드 할 수]

public ActionResult Index(int? id) { 

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

고맙습니다. –

+0

nullable 매개 변수와 동일한 메소드를 사용하면 효과가 있습니다! 이제 mvcCodeRouting을 시도해보십시오. –

+0

mvccoderouting의 참조를 추가 할 때 경고 아이콘이 나타납니다. 나는 비주얼 스튜디오 2008 asp.net MVC 2를 사용합니다. –