私は何か間違ったことをしていると確信していますが、運が悪かったのでこれに数時間を費やした後、誰かが私を助けてくれたら本当にうれしいです.
ルーティング システムは、最初のルーティング登録でのみパラメータを尊重するようです。
これは私のglobal.asax.csがどのように見えるかです
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
namespace MvcApplication4
{
public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"t", // Route name
"{controller}/{action}/{i}/{v}",
new { i = UrlParameter.Optional, v = UrlParameter.Optional }
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}",
new { id = UrlParameter.Optional }
);
}
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
}
}
ホームコントローラーはこんな感じ
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace MvcApplication4.Controllers
{
public class HomeController : Controller
{
public ActionResult Index(int? id)
{
ViewBag.Message = "Welcome to ASP.NET MVC!";
return View();
}
public ActionResult About(int? a)
{
return View();
}
}
}
問題は、このURLを試すときです
http://localhost:52230/Home/Index/2
ID は常に null です。しかし、試してみると
http://localhost:52230/Home/Index?id=2
....うまくいきます。
他のルートの前にホーム/インデックスを登録しても機能します。その場合、後で登録されたルートには、パラメーターの受け入れにおいて同じ問題があります。
ここで何が間違っていますか?
アップデート:
これらの両方のコントローラーを機能させたいのですが、ルート登録はどのようになりますか?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace MvcApplication4.Controllers
{
public class HomeController : Controller
{
public ActionResult Index(int? id)
{
ViewBag.Message = "Welcome to ASP.NET MVC!";
return View();
}
}
}
2台目のコントローラー
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace MvcApplication4.Controllers
{
public class VisitorController : Controller
{
//
// GET: /VisitorSecurityPoints/
public ActionResult Test(string i,string v)
{
return View();
}
}
}