【问题标题】:ASP.Net MVC RoutesASP.Net MVC 路由
【发布时间】:2009-06-01 15:17:54
【问题描述】:

我正在尝试在我的 ASP.NET MVC C# 应用程序中设置一个简单的路由系统,但它不起作用:/

这是我的根“http://localhost/Admin/”或“http://localhost/Admin/Home.mvc/Index

我有一个 HomeController 来管理索引和起始页。

在“索引”页面中,我有一个可供选择的客户端列表(按钮或其他),我想在所选客户端的功能中转到“http://localhost/StoreV3Admin/{client}/Home.mvc/Start”。

我对此进行了一些研究,但我并不完全了解路由系统的工作原理。

首先,有可能吗??

谢谢。

【问题讨论】:

    标签: asp.net-mvc routes


    【解决方案1】:

    我只是把一个简单的 mvc 应用程序放在一起,我能够让你描述的工作正常。

    在我的 global.asax.cs 中,在 RegisterRoutes 方法中,我添加了以下路由:

    routes.MapRoute(
        "Client",
        "{client}/{controller}/{action}/{id}",
        new { client = "Default", controller = "Home", action = "Index", id = "" }
        );
    

    在我的控制器中,我声明了一个这样的方法:

    public ActionResult FooBar(string client)
    {
        return View();
    }
    

    在我看来,我建立这样的链接:

    <p><%= Html.ActionLink("Client1", "FooBar", "Home", new { client = "Client1"}, null) %></p>
    <p><%= Html.ActionLink("Client2", "FooBar", "Home", new { client = "Client2"}, null) %></p>
    <p><%= Html.ActionLink("Client3", "FooBar", "Home", new { client = "Client3"}, null) %></p>
    

    生成的标记最终看起来像这样:

    <p><a href="/Client1/Home/FooBar">Client1</a></p>
        <p><a href="/Client2/Home/FooBar">Client2</a></p>
        <p><a href="/Client3/Home/FooBar">Client3</a></p>
    

    我希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      我认为您的 MVC 应用程序必须驻留在应用程序根目录中才能正常运行。尝试在 IIS 中创建一个 VirtualDirectory,看看是否有帮助。

      为什么你的路由中有一个“.mvc”?你不是说http://localhost/Admnin/Home/Index吗?

      【讨论】:

      • 如果投票给我的人能告诉我原因,我将不胜感激,这样我就可以提高作为 SO 成员和程序员的水平。谢谢!
      • 您不需要在根目录下。如果您不使用通配符映射将所有请求发送到 ASP.NET,则在 IIS6 中需要使用 .mvc。
      猜你喜欢
      • 1970-01-01
      • 2011-03-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多