0

я хочу получить доступ к результату действия в контроллере (мой controlelr является HotelController действия Index)Access asp.net MVC контроллер ActionResult

(http://localhost:9001/Hotel/Index) дает ошибку ниже

Ресурс не может быть найдено.

Описание: HTTP 404. Ресурс, который вы ищете (или его зависимости), мог быть удален, изменилось его имя или временно недоступно. Просмотрите следующий URL-адрес и убедитесь, что оно написано правильно.

Запрошенный URL:/Гостиница/Индекс

контроллер Отель

public class HotelController : Base.BoxyController 
    { 
     protected override void OnActionExecuting(ActionExecutingContext filterContext) 
     { 
      base.OnActionExecuting(filterContext); 

      ViewBag.Title = "SonDakka - Otel"; 
     } 

     public ActionResult Index(string culture) 
     { 

.........

BoxyController

public class BoxyController : MainController 
    { 
     protected override void OnActionExecuting(ActionExecutingContext filterContext) 
     { 
      base.OnActionExecuting(filterContext); 

..... .....

Ma inController

public class MainController : SiteController 
    { 
     protected override void OnActionExecuting(ActionExecutingContext filterContext) 
     { 
      base.OnActionExecuting(filterContext); 

......

SiteController

[ExitHttpsIfNotRequired] 
    public class SiteController : Controller 
    { 
     public Account Me { get; set; } 

     protected override void OnActionExecuting(ActionExecutingContext filterContext) 
     { 

.......

и это мой global.asax

using System; 
using System.Data.Entity; 
using System.IO; 
using System.Linq; 
using System.Web.Mvc; 
using System.Web.Routing; 
using Tourism.Data; 
using Tourism.Data.Mvc.Authorization; 
using Tourism.Data.Mvc.Routing; 

namespace Tourism 
{ 
    public class MvcApplication : System.Web.HttpApplication 
    { 
     public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
     { 
      filters.Add(new HandleErrorAttribute()); 
     } 

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

      var cultures = db.Cultures.Select(c => c.Code).ToArray(); 

      routes.MapRoute 
       (
        "Ajax", 
        "{culture}/{controller}/{action}/{id}", 
        new { id = UrlParameter.Optional }, 
        new { culture = new ArrayRouteConstraint(true, cultures), controller = new ArrayRouteConstraint(true, "Ajax") } 
       ).RouteHandler = new GlobalizedRouteHandler(); 

      routes.Add 
       (
        "Page", 
        new GlobalizedPageRoute 
         (
          "{culture}/{path}", 
          null, 
          new RouteValueDictionary { { "culture", new ArrayRouteConstraint(true, cultures) } }, 
          new GlobalizedRouteHandler() 
         ) 
       ); 

      routes.Add 
       (
        "Route", 
        new GlobalizedRoute 
         (
          "{culture}/{path}/{slug}/{id}", 
          new RouteValueDictionary { { "culture", UrlParameter.Optional }, { "path", UrlParameter.Optional }, { "slug", UrlParameter.Optional }, { "id", UrlParameter.Optional } }, 
          new RouteValueDictionary { { "culture", new ArrayRouteConstraint(false, cultures) } }, 
          new GlobalizedRouteHandler() 
         ) 
       ); 
     } 

     protected void Application_Start() 
     { 
      Database.SetInitializer<TourismContext>(null); 

      using (var db = new TourismContext()) 
      { 
       #if !DEBUG 

       if (!db.Database.CompatibleWithModel(true)) 
       { 
        System.Web.HttpRuntime.UnloadAppDomain(); 

        throw new Exception("Veritabanı değişikliği tespit edildi."); 
       } 

       #endif 

       AreaRegistration.RegisterAllAreas(); 

       RegisterGlobalFilters(GlobalFilters.Filters); 

       RegisterRoutes(db, RouteTable.Routes); 
      } 
     } 

     protected void Application_PostAuthenticateRequest() 
     { 
      if (Request.IsAuthenticated) 
      { 
       Context.User = System.Threading.Thread.CurrentPrincipal = 
        new AuthorizationPrincipal(Context.User.Identity); 
      } 
     } 
    } 
} 
+1

«Запрошенный URL:/Hotel/Thanks» - это часть ошибки? Если да, то у вас есть метод под названием «Спасибо»? –

+0

Мне нужно обновить вопрос ... я пытаюсь получить доступ к индексу, он дает ошибку, чем я пытаюсь получить благодарность, что он все еще дает некоторую ошибку ... http: // localhost: 9001/Hotel/Index – user1688401

+0

Можете ли вы опубликовать свой маршрут config? Пожалуйста, отредактируйте свой пост и включите его. –

ответ

0

Основываясь на маршруте конфигурации вы в курсе, ваш URL должен быть с culture, например:

http://localhost:9001/en/Hotel/Index 

Обратите внимание на en перед Hotel. Это может быть любое значение, действующее в вашей базе данных.

3

Потому что это связано с тем, что двигатель Razor не способен найти Спасибо за действия в гостиничном контролере. Вы должны сделать Thanks действия с контроллером отеля, как это:

public class HotelController : Base.BoxyController 
{ 

public ActionResult Thanks(string culture) 
{ 
    return View(); 
} 

} 

А также убедитесь, чтобы создать представление в папке отеля с HTML кодом.

+0

i update question ... я отредактировал мою ошибку вопроса ... мой отельController получил благодарность и действие индекса ... – user1688401

+0

http: // localhost: 9001/Отель/Индекс я называю это, и это дает ошибку .... и у HotelController есть результат действия индекса ..... общедоступный индекс ActionResult (строковая культура) .... – user1688401

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