0

コントローラーでアクション結果にアクセスしたい (私のコントローラーは HotelController アクションはインデックスです)

( http://localhost:9001/Hotel/Index) 以下のエラーが表示されます

リソースが見つかりません。

説明: HTTP 404。探しているリソース (またはその依存関係の 1 つ) は、削除されたか、名前が変更されたか、一時的に利用できない可能性があります。次の URL を見直して、スペルが正しいことを確認してください。

要求された URL: /Hotel/Index

ホテルコントローラー

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

            ViewBag.Title = "SonDakka - Otel";
        }

        public ActionResult Index(string culture)
        {

.........

ボクシーコントローラー

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

..........

メインコントローラー

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

……

サイトコントローラー

  [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);
            }
        }
    }
}
4

2 に答える 2

3

これは、ホテル コントローラーで Razor エンジンが Thanks アクションを見つけられないためです。次のように Hotel コントローラーで Thanks アクションを作成する必要があります。

public class HotelController : Base.BoxyController
{

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

}

また、HTML コードを使用して Hotel フォルダーにビューを作成してください。

于 2013-04-10T12:20:40.890 に答える