2014-12-18 1 views
0

MapRouting에 문제가 있습니다. 배열 목록의 이름으로 새 URL을 생성하고 싶습니다. 나는 MVC에 익숙하지 않고 웹 애플리케이션의 경험으로 시도하고있다. 나는 그 안에 액션이없는 새로운 링크를 생성하고 싶다. 난 그냥 "로컬 호스트/채팅 /"+ chatName 싶습니다. 당신이 감각을 이해하지 못한다면 저에게 질문하십시오.MapRouting ASP.Net MVC4 - Cant에서 새 URL 생성

 LocalhostHoardeWebService.varShareWS addChatRooms = new LocalhostHoardeWebService.varShareWS(); 
     Array wsRespnonsAddChatObject = addChatRooms.addAllChatRoomsRoute(); 



     foreach (string chatNameArray in wsRespnonsAddChatObject) 
     { 
      string chatName = chatNameArray.ToString(); 

      routes.MapRoute(
       name: chatName, 
       url: "{controller}/{id}", 
       defaults: new { controller = "Chat", id = chatName } 
      ); 

     } 
+0

/Chat/abc 또는 /Chat/xyz를 호출 - 당신은 단지 같은 것을 통과 –

+0

여전히 경로와 함께 작동하지 않습니다. MapRoute ( 이름 : chatName, url : "Chat/{id}", 기본값 : chat/{id} /{신분증 } ", 기본값 : new {controller ="Chat ", action ="Index "} ); 왜 그런가? –

+0

루프 (그 하나의 라우트 정의)를 없애고'ChatController'에'public ActionResult Index (string id)'메소드를 가지고 있습니까? 이름을 지정해야합니다 (예 :'name : chat') –

답변

0

경로 작동 방식에 대한 오해. 기본 컨트롤러 및 동작 방법을 지정해야하며 동작 방법에서는 chatName 값을 매개 변수로 전달합니다. 당신은 경로가 (하나의 경로, 아니 루프)처럼 보일 것입니다. 또한 이것이 Default 경로 위에 있는지 확인하십시오.

routes.MapRoute(
    name: "chat", 
    url: "Chat/{id}", 
    defaults: new { controller = "Chat", action = Index } 
); 

ChatController

public ActionResult Index(string id) 
{ 
    // id is the value of chatName 
} 

과 당신은 작업을 지정해야하고/ID를 지정하지 않아야하지