2
我有以下类,其中用户将访问控制器AT/1/2
这意味着项目1,步骤2.如果用户输入一个项目而不是一个步骤(第二方法/路线)它应该使用步骤99.如果用户失败要输入任何内容,它应该使用项目1,步骤99.我可以通过手动调用重载方法轻松解决此问题,但我认为我应该能够使用RedirectToAction完成同样的事情。但是,在第二种和第三种方法中,我的单元测试中为v为空。为什么RedirectToAction返回null?
我的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;
}
}
你可以显示单元测试。 – Nkosi