【发布时间】:2016-04-29 07:52:37
【问题描述】:
我有以下类,其中用户将访问控制器AT/1/2,这意味着项目 1,步骤 2。如果用户输入项目而不是步骤(第二方法/路线),则应使用步骤 99。如果用户无法输入任何内容,它应该使用项目 1,步骤 99。我可以通过手动调用重载方法轻松解决此问题,但我认为我应该能够使用 RedirectToAction 完成同样的事情。但是在第 2 和第 3 方法中,v 在我的单元测试中为空。
我的 RegisterRoutes 看起来像:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes(); //MVC 5 Attribute Routes
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
我不确定我在这里缺少什么。
public class ATController : Controller
{
[AllowAnonymous]
[Route("{project}/{step}")]
public ActionResult Index(int project, int step)
{
var m = new ATViewModel();
m.Project = project;
m.Step = step;
return View(m);
}
[AllowAnonymous]
[Route("{project}")]
public ActionResult Index(int project)
{
var v = RedirectToAction("Index", new { project, step = 99 });
return v;
}
[AllowAnonymous]
public ActionResult Index()
{
var v = RedirectToAction("Index", new { project = 1, step = 99 });
return v;
}
}
【问题讨论】:
-
你能展示单元测试吗?
标签: c# asp.net-mvc asp.net-mvc-5 asp.net-mvc-routing