溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

六、Asp.Net MVC4.0開發(fā)CMS系統(tǒng)案例之路由規(guī)則修改

發(fā)布時(shí)間:2020-07-09 19:13:04 來源:網(wǎng)絡(luò) 閱讀:1318 作者:sujerhy 欄目:編程語言

    今天開放的時(shí)候,發(fā)現(xiàn)如果我要把生成View視圖頁csthtml建立多個(gè)文件夾目錄下面,contraller就找不到了。實(shí)際開發(fā)工作中,不可能所有生成的視圖都放在View下面的一級文件夾下,對于系統(tǒng)的代碼管理不是十分科學(xué),于是我就嘗試如何讓它實(shí)現(xiàn)。

    比如登錄功能,控制器建立的路徑為:Contrallers/Sys/Com/UserContraller.cs.如圖:


六、Asp.Net MVC4.0開發(fā)CMS系統(tǒng)案例之路由規(guī)則修改

    系統(tǒng)添加視圖默認(rèn)生成View的路徑為:View/User/UserLogin.cshtml.如果我要把路徑改為View/Sys/Com/UserLogin.cshtml,與Contraller的保持一直,就會(huì)報(bào)錯(cuò)系統(tǒng)找不到它。

六、Asp.Net MVC4.0開發(fā)CMS系統(tǒng)案例之路由規(guī)則修改

    系統(tǒng)默認(rèn)的規(guī)則只會(huì)到view/user/里面搜索。這是因?yàn)槁酚稍O(shè)置了/view/{contraller}/{action}/id 規(guī)則,當(dāng)文件被移走之后就找不到了。因此我們需要通知真正的位置在哪里。

六、Asp.Net MVC4.0開發(fā)CMS系統(tǒng)案例之路由規(guī)則修改

自定義路由規(guī)則,在App_Start文件夾下新建一個(gè)類MyRoute.繼承自RazorViewEngine 對選擇視圖方法FindView進(jìn)行重寫。編寫代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace Hillstone.App_Start
{

    public sealed class MyRoute : RazorViewEngine
    {
        /// <summary>
        /// 自定義路由規(guī)則
        /// </summary>
        public MyRoute()
        {
            ViewLocationFormats = new[]
            {
                "~/Views/{1}/{0}.cshtml",
                "~/Views/Shared/{0}.cshtml",
                "~/Views/Sys/Com/{1}/{0}.cshtml"
            };
        }
        public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache)
        {
            return base.FindView(controllerContext, viewName, masterName, useCache);
        }

    }
}

讓將這個(gè)路由規(guī)則在Global中注冊,注冊方法如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
using Hillstone.DAL;
using Hillstone.App_Start;

namespace Hillstone
{
    // 注意: 有關(guān)啟用 IIS6 或 IIS7 經(jīng)典模式的說明,
    // 請?jiān)L問 http://go.microsoft.com/?LinkId=9394801

    public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            RegisterView();//注冊視圖訪問規(guī)則
           // System.Data.Entity.Database.SetInitializer<HillstoneContext>(new Initializer());
        }
        protected void RegisterView()
        {
            ViewEngines.Engines.Clear();
            ViewEngines.Engines.Add(new MyRoute());
        }
    }
}

運(yùn)行OK.

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI