2017-03-29 2 views
0

이 오류가 발생하여 네임 스페이스의 문자열 배열을 허용하는 MapRoute의 오버로드를 사용하여 해결했습니다. 이 문제는 대부분 하이퍼 링크가 있습니다. 하지만 지금은 양식을 제출할 때이 문제가 있습니다. 나는이 같은() BeginForm 전화 :양식을 제출할 때 "컨트롤러와 일치하는 여러 유형을 찾았습니다."오류가 발생했습니다

@using (Html.BeginForm("SearchMotorcycle", "Motorcycle", FormMethod.Get)) 

하지만이 오토바이 컨트롤러가, 내가 네임 스페이스를 지정해야 가정합니다. 내가 올바르게한다면, 어떻게해야합니까?

appName.Controllers.Search appName.Controllers.add

하고 오류가 발생했을 때 나에게보고되는 내용은 다음과 같습니다

내 오토바이 컨트롤러에 있습니다.

+0

당신은 [지역]을 사용하는 방법에 대해 생각 해본 적이 (https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/areas)? – CodingYoshi

+0

영역을 사용하는 경우'BeginForm'은 다음과 같이'routeValues' 매개 변수에 영역 이름을 추가해야합니다 :'@using (Html.BeginForm ("SearchMotorcycle", "Motorcycle", new {area = "AreaName"}, FormMethod.Get , null))'. –

답변

0

라우팅을 사용하고 컨트롤러를 별도의 네임 스페이스에 보관하면됩니다. MapRoute을 사용하면 경로에 해당하는 네임 스페이스를 지정할 수 있습니다.

을 감안할 때이 컨트롤러 :

namespace CustomControllerFactory.Controllers 
{ 
public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return new ContentResult("Controllers"); 
    } 
} 
} 





namespace CustomControllerFactory.ServiceControllers 
{ 
    public class HomeController : Controller 
    { 
    public ActionResult Index() 
    { 
     return new ContentResult("ServiceControllers"); 
    } 
    } 
} 

다음과 같은 라우팅 추가

routes.MapRoute(
     "Services", 
     "Services/{controller}/{action}/{id}", 
     new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
     new string[] { "CustomControllerFactory.ServiceControllers" } // Namespace 
    ); 


    routes.MapRoute(
     "Default", // Route name 
     "{controller}/{action}/{id}", // URL with parameters 
     new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
     new string[] { "CustomControllerFactory.Controllers"} // Namespace 
    ); 

당신은 다음과 같은 응답

/서비스/홈 기대한다 - ServiceControllers

및 /홈 - 컨트롤러

관련 문제