0

私は次のことを成功させようとはしていません:

url:

MyString/MyController1
MyString/MyController2
MyString/MyController3
MyString/

私が使用している最初の3つは:

routes.MapRoute(
                "MyString/MyController1", // Route name
                "MyString/MyController1/{action}/{id}", // URL with parameters
                new {controller = "MyController1", action = "Index", id = UrlParameter.Optional},
                new string[] {"Core_Web.Controllers.MyString"}
                );

そしてそれは完全にうまく機能します。MyString /にアクセスしようとすると、問題が発生します。私が追加しました :

routes.MapRoute(
                "Default",
                "MyString",
                new { controller = "MyString", action = "Index", id = UrlParameter.Optional },
                new string[] {"Core_Web.Controllers"}
                );

しかし、URL MyStringを呼び出すと、次のようになります。

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

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

要求されたURL:/ MyString

MyStringで名前が付けられたコントローラーがありますCore_Web.Controllers

ご協力いただきありがとうございます、

[編集]

これが私のコード全体です:

ルート:

routes.MapRoute(
    "Contabilita",
    "Contabilita",
    new { controller = "Contabilita", action = "Index" },
    new string[] { "Core_Web.Controllers" }
    );

routes.MapRoute(
    "Contabilita_Controller", // Route name
    "Contabilita/{controller}/{action}/{id}", // URL with parameters
    new { action = "Index", id = UrlParameter.Optional},
    new string[] { "Core_Web.Controllers.Contabilita" }
    );

およびコントローラー:

namespace Core_Web.Controllers
{
    public class ControllerContabilitaBase : ControllerBaseSuper
    {
       ....
    }
    public class ControllerContabilita : ControllerContabilitaBase
    {
        public ActionResult Index()
        {
            return View(GetView("Index"));
        }
    }
}

namespace Core_Web.Controllers.Contabilita
{
    public class ImpiantoController : ControllerContabilitaBase
    {
     ...
    }
    public class LottoController : ControllerContabilitaBase
    {
    ...
    }
}

しかし、それも機能しません。コントローラを含むURLは機能しますが、他のURLは機能しません。それは404を与えます。

私はおそらく何か他のものを見落としていますか?

[/編集]

4

1 に答える 1

1

次のルート定義を(この順序で)試してください。

routes.MapRoute(
    "MyString",
    "MyString",
    new { controller = "MyString", action = "Index" },
    new string[] { "Core_Web.Controllers" }
);

routes.MapRoute(
    "MyString_Controller",
    "MyString/{controller}/{action}/{id}",
    new { action = "Index", id = UrlParameter.Optional },
    new string[] { "Core_Web.Controllers" }
);

これにより、次のパターンが得られます。

url                  controller             action
--------------------------------------------------
/mystring            MyStringController     Index
/mystring/my1        My1Controller          Index
/mystring/my1/foo    My1Controller          Foo
/mystring/my2        My2Controller          Index
/mystring/my3        My3Controller          Index
于 2012-07-17T13:44:09.633 に答える