Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc MapRouting ASP.Net MVC4-无法生成新URL';s_Asp.net Mvc_Asp.net Mvc 4_Asp.net Mvc Routing - Fatal编程技术网

Asp.net mvc MapRouting ASP.Net MVC4-无法生成新URL';s

Asp.net mvc MapRouting ASP.Net MVC4-无法生成新URL';s,asp.net-mvc,asp.net-mvc-4,asp.net-mvc-routing,Asp.net Mvc,Asp.net Mvc 4,Asp.net Mvc Routing,我的地图布线有问题。我想用数组列表中的名称生成新的URL。我是MVC的新手,正在尝试使用Web应用程序的体验。我想生成新的链接,其中没有行动。我只想要“Localhost/Chat/”+chatName。如果你不明白我的意思,请问我一些问题,我不太擅长解释 LocalhostHoardeWebService.varShareWS addChatRooms = new LocalhostHoardeWebService.varShareWS(); Array wsR

我的地图布线有问题。我想用数组列表中的名称生成新的URL。我是MVC的新手,正在尝试使用Web应用程序的体验。我想生成新的链接,其中没有行动。我只想要“Localhost/Chat/”+chatName。如果你不明白我的意思,请问我一些问题,我不太擅长解释

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

        }

你对路线工作原理的误解。您需要指定默认控制器和操作方法,并在操作方法中将
chatName
的值传递给参数。您的路线应该看起来像(一条路线,没有环路)。另外,请确保该路径高于默认路径

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
}

将其称为
/Chat/abc
/Chat/xyz

您需要指定一个操作,而您不/不应该指定id-您只需将其作为参数传递
url:“Chat/{id}”,默认值:new{controller=“Chat”,action=“Index”}
它仍然不适用于routes.MapRoute(名称:chatName,url:“Chat/{id}”,默认值:new{controller=“Chat”,action=“Index”});你知道为什么吗?你摆脱了循环(它只是一个路由定义),你有和
公共ActionResult索引(string id)
ChatController
中的方法?您还应该指定一个名称(比如
name:chat
)它可以工作!非常感谢您,问题是我没有正确理解MVC是如何工作的(您可以根据您在URL中键入的内容获取控制器的id)。非常感谢您,先生!