我确定我做错了什么,但是在没有运气的情况下花了几个小时之后,如果有人可以帮助我解决这个问题,我会非常高兴。
似乎路由系统仅在第一次路由注册时才接受参数。
这就是我的 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();
}
}
}
问题是当我尝试这个网址时
http://localhost:52230/Home/Index/2
id 始终为空。但是,如果我尝试
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();
}
}
}
第二控制器
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();
}
}
}