2013-09-04 3 views
2

Я добавил область под названием blogging на моем сайте. Я создал все материалы, и я просто попытался получить к ней доступ в браузере, вручную введя Url, но я получаю сообщение об ошибке «Ошибка сервера в '/' Заявка.". Я прикрепил код и снимок моего проекта. Любая помощь будет оценена по достоинству.AreaRegistration не работает в MVC Razor

global.asax

public static void MyCustomRouting(RouteCollection coll) 
{ 
    coll.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
    coll.MapRoute("Default", "{controller}/{action}", new { controller = "Home", action = "Index" }, new[] { "Areas.Controllers" }); 
} 

protected void Application_Start() 
{ 
    //RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes); 
    AreaRegistration.RegisterAllAreas(); 
    RegisterGlobalFilters(GlobalFilters.Filters); 
    MyCustomRouting(RouteTable.Routes); 
} 

BloggingAreaRegistration.cs

using System.Web.Mvc; 

namespace MVC_PageRouting.Areas.Blogging 
{ 
    public class BloggingAreaRegistration : AreaRegistration 
    { 
     public override string AreaName 
     { 
      get { return "Blogging"; } 
     } 

     public override void RegisterArea(AreaRegistrationContext context) 
     { 
      context.MapRoute("Blogging_default", "Blogging/{controller}/{action}/{id}", new {action="Index",UrlParameter.Optional }); 
     } 
    } 
} 

Структура папок:

Architecture

Ошибка:

Browser Error

ответ

0

Вы можете обновить свою регистрацию области на это и попробовать?

context.MapRoute("Blogging_default", "Blogging/{controller}/{action}/{id}", new {controller = "BloggingHome",action="Index",UrlParameter.Optional }); 
+0

Я попытался добавить контроллер ранее, но он не работает – Vignesh

+0

Можете ли вы переместить свой вид в папку представлений в базовом каталоге и попробовать. просто переместите index.html – ckv

2

Укажите, что ваш параметр идентификатор не является обязательным добавлением «ID =» к фронту UrlParameter.Optional

new {action="Index", id = UrlParameter.Optional } 
1

я бы сделал ставку, если пошел на этот адрес он будет работать:

http://localhost:51803/Blogging/BloggingHome/Index/0 

Причина в том, что вы неправильно указали параметры MapRoute. Вы указали:

new {action="Index", UrlParameter.Optional }); 

Вы забыли указать имя идентификатора, поэтому MVC не знает, что вы имеете в виду. Вы хотите:

new {action="Index", id=UrlParameter.Optional }); 

Обратите внимание на «id =», это указывает MVC, что идентификатор является необязательным. Без этого MVC не знает, что вы подразумеваете под UrlParameter.Optional, поэтому он делает идентификатор обязательным. И поскольку вы не указали идентификатор в своем URL-адресе, маршрут не был выбран, и, таким образом, было выпущено 404.

+0

Спасибо за вашу помощь. Я забыл добавить id i dono, как я пропустил это, но, тем не менее, спасибо. наряду с этим я хочу, чтобы «Blogging/BloggingHome/Index» это как моя стартовая страница вместо «/ Home/Index», поэтому для этого, как настроить ее в MyCustomRouting – Vignesh

+0

@ my1 - вам нужно указать контроллер и область по умолчанию, так же как и вы являетесь действием, и вам нужно сделать это по умолчанию. –

+0

Я добавил этот «coll.MapRoute» («Default», «{controller}/{action}», new {controller = "BloggingHome", action = "Index", area = "Blogging"}); в Global.asax, но iam получает ошибку, поскольку «индекс« Index »или его мастер не был найден, или механизм просмотра не поддерживает найденные местоположения. Были найдены следующие местоположения: ~/Views/BloggingHome/Index.aspx ..." – Vignesh

Смежные вопросы