Ich habe die folgende Klasse, wo ein Benutzer auf einen Controller AT/1/2
zugreifen kann, was Projekt 1, Schritt 2 bedeutet. Wenn der Benutzer ein Projekt und keinen Schritt (zweite Methode/Route) eingibt, sollte Schritt 99 verwendet werden. Wenn der Benutzer fehlschlägt um irgendetwas einzugeben, sollte es Projekt 1, Schritt 99 verwenden. Ich kann das leicht beheben, indem ich die überladene Methode manuell aufruft, aber ich dachte, ich sollte dasselbe mit RedirectToAction erreichen können. Bei den zweiten und dritten Methoden ist jedoch v in meinen Komponententests null.Warum gibt RedirectToAction null zurück?
Mein RegisterRoutes wie folgt aussieht:
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 }
);
}
Ich bin nicht sicher, was ich hier fehlt.
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;
}
}
Können Sie die Komponententests anzeigen. – Nkosi