2013-06-27 37 views
0

我已經創建了我的asp.net MVC 4項目中的「管理」區域。目前這個領域只是基本的。 理想的情況下,一旦應用程序運行,我想用戶在URL輸入/ Admin和被重新定向到管理索引視圖。 但是,當我運行該程序時,我收到一個錯誤,指出「無法找到管理員」? 我錯過了某處的參考?4的mvc應用程序不拾取區內容

此外,一個普通的用戶登錄頁面是渲染的第一個視圖,我需要繞過該登錄頁面進入管理部分。 但是我相信下面的行阻止了第二個登錄選項。

WebSecurity.InitializeDatabaseConnection("Portal.Model.PortalDBContext","PatientPortalAccount", "PatientID", "Username", autoCreateTables: true); 

請記住,我不能更改常規用戶表以包含角色。 如果你還沒有注意到已經我還在學習,所以道歉的長篇大論問題...

admincontoller,

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

namespace Portal.Web.Areas.Admin.Controllers 
{ 
public class AdminController : Controller 
{ 
    // 
    // GET: /Admin/Admin/ 

    public ActionResult Index() 
    { 
     return View(); 
    } 

與指數的ActionResult,其中有一個觀點。

@model Portal.Model.AdminDetails 
@{ 
ViewBag.Title = "Admin"; 
Layout = "~/Views/Shared/Login.cshtml"; 
} 

此區域還具有生成cs文件AdminAreaRegistration

using System.Web.Mvc; 

    namespace Portal.Web.Areas.Admin 
    { 
    public class AdminAreaRegistration : AreaRegistration 
    { 
    public override string AreaName 
    { 
     get 
     { 
      return "Admin"; 
     } 
    } 

    public override void RegisterArea(AreaRegistrationContext context) 
    { 
     context.MapRoute(
      "Admin_default", 
      "Admin/{controller}/{action}/{id}", 
      new { controller = "Admin", action = "Index", id = UrlParameter.Optional }, 
      new [] { "Admin.Controllers" } 
     ); 
    } 
} 
} 

而且在Global.asax文件中....

using System; 
    using System.Linq; 
    using System.Web.Http; 
    using System.Web.Mvc; 
    using System.Web.Optimization; 
    using System.Web.Routing; 
    using WebMatrix.WebData; 

    namespace Portal.Web 
    { 
// Note: For instructions on enabling IIS6 or IIS7 classic mode, 
// visit http://go.microsoft.com/?LinkId=9394801 

    public class MvcApplication : System.Web.HttpApplication 
    { 
    protected void Application_Start() 
    { 
     WebSecurity.InitializeDatabaseConnection("Portal.Model.PortalDBContext",    "PatientPortalAccount", "PatientID", "Username", autoCreateTables: true); 

     //BOC - Remove Web Forms View Engine 
     ViewEngines.Engines.Clear(); 
     ViewEngines.Engines.Add(new RazorViewEngine()); 

     AreaRegistration.RegisterAllAreas(); 

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

回答

1

你在你的路線有一個命名空間的約束:「Admin.Controllers」但你的控制器在命名空間「Portal.Web.Areas.Admin.Controllers

+0

偉大的,那做了三ck,謝謝。無需登錄即可查看管理索引視圖的任何提示?我是否正確地說Global.asax中的「WebSecurity」選項卡正在阻止這樣的操作?請理解我不能讓普通用戶成爲管理員,因爲常規用戶表與其他產品同步。 – mkell

+0

@mkell在控制器上添加[Auhorize]屬性強制重定向到登錄頁面 – Gregoire

+0

我在公共類AdminController上添加了它:Controller,恐怕沒有什麼區別。在我可以通過URL訪問管理員索引視圖之前,常規用戶仍然需要登錄。 – mkell

相關問題