码迷,mamicode.com
首页 > Web开发 > 详细

MVC5.0 中如何提高Controller 的优先级

时间:2016-01-06 00:11:50      阅读:515      评论:0      收藏:0      [点我收藏+]

标签:

//在area下建立的Home
namespace WebApplication8.Areas.Weather.Controllers
{
    public class HomeController : Controller
    {
        // GET: Weather/Home
        public ActionResult Index()
        {
            return Content(this.GetType().FullName);
        }
    }
}

//在controller文件下建立的home
namespace WebApplication8.Controllers
{
    public class HomeController : Controller
    {
        // GET: Home
      
        public ActionResult Index()
        {
            return Content(this.GetType().FullName);
        }
    }
}

  运行时提示:

      技术分享

根据错误大家都知道是什么原因了,如何修改呢,有两种方法的,可能大家都知道是一种通过routeTable.Routes.MapRoute方法,进行namespaces约束,进行如:

 public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
                constraints: null,
                namespaces:new string[] { "WebApplication8.Areas.Weather.Controllers" }
            );
        }

  通过运行,果然可以识别正确的;

   技术分享

刚才说了还有另种方法来改变这种优先级;

  在controller中,有负责注册controller的controllerBuilder 类,通过他属性就可以达到注册,提升优先级的

如:

  protected void Application_Start()
        {
            ControllerBuilder.Current.DefaultNamespaces.Add("WebApplication8.Controllers");
            AreaRegistration.RegisterAllAreas();
            RouteConfig.RegisterRoutes(RouteTable.Routes);
        }

  结果:

      技术分享

,

    但是谁的优先级更高呢,我把正两种方法都一块,运行chrome,得知,通过路由的maproute注册的优先级更高。

 

MVC5.0 中如何提高Controller 的优先级

标签:

原文地址:http://www.cnblogs.com/fandong90/p/5103939.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!