Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 我应该如何制作此ASP.NET MVC路线?_Asp.net Mvc_Routes - Fatal编程技术网

Asp.net mvc 我应该如何制作此ASP.NET MVC路线?

Asp.net mvc 我应该如何制作此ASP.NET MVC路线?,asp.net-mvc,routes,Asp.net Mvc,Routes,我希望有以下url。。我不确定我应该怎么做: 1) 在global.asax中注册的路由 2) 控制器方法 URL/路由 请注意-我不想要http://www.mysite.com/{page}/{tags}/等。。如果这种差异有意义的话。我也了解默认路线,但我不确定如何调整它们以使其符合我的要求 最后,我还知道如何使用Html.ActionLink(..),所以我不担心如何使用它 有什么建议吗 单元测试 我还认为我可以进行单元测试,如下所示:- (使用MvcFakes) 更新1 我希望在默认的

我希望有以下url。。我不确定我应该怎么做:

1) 在global.asax中注册的路由
2) 控制器方法

URL/路由 请注意-我不想要
http://www.mysite.com/{page}/{tags}/
等。。如果这种差异有意义的话。我也了解默认路线,但我不确定如何调整它们以使其符合我的要求

最后,我还知道如何使用Html.ActionLink(..),所以我不担心如何使用它

有什么建议吗

单元测试 我还认为我可以进行单元测试,如下所示:- (使用MvcFakes)

更新1
我希望在默认的HomeController上运行所有这些索引操作,如果这有帮助的话。(事实上,我已经将我的HomeController重命名为PostController,但这并不重要/不应该影响问题)。

实际上,对于您尝试执行的操作,您不需要额外的路由。默认的MVC路由可以很好地处理您的请求。您只需记住,控制器操作参数名称必须与url参数名称匹配

URL: http://www.mysite.com/?page=2&tags=fooBar

public ActionResult Index(string page, string tags)
{
   ViewData["Message"] = string.Format("Page={0}, Tags={1}", page, tags);
   return View();
}
当然,这是默认的控制器“主”和操作“索引”。但我希望这一点很清楚


Scott Guthrie发表了一篇关于路由的精彩文章

,看起来您在主控制器上运行索引操作。是这样吗?是这样。这就是我想要的。那么你是不是建议我使用以下路径:routes.MapRoute(“Home”,new{controller=“Post”,action=“Index”}Oops.typo.controller=“Post”应该读为:new{controller=“Home”…}.soz.routes.MapRoute(“Default”,“{controller}/{action}/{id}”,new controller=“Home”,action=“Index”,id=”“});是的,默认情况下,我做了一个示例项目来尝试,它工作得很好。Kewl!你说得对!!!我想,如果我有方法签名=>PublicActionResult索引(字符串页面,字符串标记),那么我需要在MapRoute(..)代码中包含页面和标记,否则它将无法找到正确的索引方法。Kewl!!!!
// Arrange.
var routes = new RouteCollection();
MvcApplication.RegisterRoutes(routes);  

// Act.
context = new FakeHttpContext("~/?page=2&tags=fooBar");
routeData = routes.GetRouteData(context);

// Assert.
Assert.AreEqual("Home", routeData.Values["controller"]);
Assert.AreEqual("Index", routeData.Values["action"]);
Assert.AreEqual(2, routeData.Values["page"]);
Assert.AreEqual("fooBar", routeData.Values["tags"]);
URL: http://www.mysite.com/?page=2&tags=fooBar

public ActionResult Index(string page, string tags)
{
   ViewData["Message"] = string.Format("Page={0}, Tags={1}", page, tags);
   return View();
}