【问题标题】:Custom routing in asp.net mvc 4asp.net mvc 4中的自定义路由
【发布时间】:2014-04-06 16:22:43
【问题描述】:

我正在制作一个小项目,其中有一个页面显示可供下载的应用程序列表。我在 RouteConfig.cs 中的路由如下所示:

        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "ViewApplication",
            url: "View/{applicationname}",
            defaults: new { controller = "View", action = "ViewApplication"}
        );

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

我的控制器如下所示:

public class ViewController : Controller
{
    public ActionResult ViewApplication(string applicationname)
    {
        return View();
    }
}

但是每当我尝试导航到 localhost:50788/View/A610723 时,它都会失败,并且 URL 会更改为 localhost:50788/?并停留在主页上。

我看过这个问题 MVC 4: Custom Routes 它几乎与我想要做的完全一样,他们使用 beername 作为字符串,但我的不起作用。

有什么我错过的吗?

谢谢

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-routing


    【解决方案1】:

    您的解决方案似乎是正确的。你确定你的错误不在其他地方吗?

    下面是这个链接的一个小例子:

    http://www.asp.net/mvc/tutorials/controllers-and-routing/creating-custom-routes-cs

    看起来和你的解决方案一模一样。

    using System.Web.Mvc;
    using System.Web.Routing;
    
    namespace MvcApplication1 {
    public class MvcApplication : System.Web.HttpApplication {
    
        public static void RegisterRoutes(RouteCollection routes) { 
    
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    
            routes.MapRoute( 
              "Blog", // Route name 
              "Archive/{entryDate}", // URL with parameters
               new { controller = "Archive", action = "Entry" } // Parameter defaults 
               );
    
               routes.MapRoute( "Default", // Route name 
               "{controller}/{action}/{id}", // URL with parameters
               new { controller = "Home", action = "Index", id = "" } // Parameter defaults
               ); 
        } 
    
        protected void Application_Start() {
    
              RegisterRoutes(RouteTable.Routes);
    
        } 
      }
    }
    

    这里是控制器:

     using System; using System.Web.Mvc;
    
     namespace MvcApplication1.Controllers { 
     public class ArchiveController : Controller { 
    
         public string Entry(DateTime entryDate) { 
              return "You requested the entry from " + entryDate.ToString(); 
         }
       } 
     }
    

    【讨论】:

    • 感谢您的确认,我只是担心我错过了一些明显的东西,例如拼写错误或错误定义。我真的找不到它没有正确路由的任何原因,我是直接在浏览器中输入 url,所以肯定只涉及路由器和控制器?
    • 嗯,我想是的。您是否尝试复制我提到的示例?它奏效了吗?今天晚上我会测试你的代码,看看我是否得到同样的错误。
    • 你是对的,问题出在其他地方。我在 ViewApplication.cshtml 文件的名称中有错字。非常感谢您的帮助
    猜你喜欢
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-10
    • 2011-04-02
    • 2020-04-15
    • 1970-01-01
    相关资源
    最近更新 更多