Ich habe eine abstrakte Klasse mit einer virtuellen Funktion bekommt definiert:zwingende eine virtuelle Methode, aber mit einer neuen Signatur: so Bindemittel benutzerdefiniertes Modell verwendet werden kann
public abstract class ContentController
{
public virtual ActionResult Index();
}
ich eine Klasse habe, die von ableitet die obige Basisklasse:
public class CartController : ContentController
ich brauche die CartController der Lage sein, einen Wagen mit einem benutzerdefinierten Modell Binder auf der Index-Methode zu binden. Etwas, das normalerweise würde wie folgt aussehen:
public ActionResult Index(Cart cart)
Wenn ich nur den Index (Warenkorb) Funktion in die Klasse CartController platzieren, bekomme ich diesen Fehler:
The current request for action 'Index' on controller type 'CartController' is ambiguous between the following action methods:
ActionResult Index() on type CartController
ActionResult Index(Cart) on type CartController
Die einzige Lösung, die ich gekommen bin oben so weit mit zu meinem Modell Bindungsfunktion und leitet aus der überschriebenen Index-Methode umbenennen:
public override ActionResult Index()
{
return RedirectToAction("IndexWithCart");
}
public ActionResult IndexWithCart(Cart cart)
{
return View("Index", cart);
}
das funktioniert, aber dann meine URL/Karre/IndexWithCart. Gibt es eine Möglichkeit, dies zu erreichen und immer noch nur die/Cart-URL zu haben, ohne die Basisklasse zu ändern?
Nick - bedeutet dies dann nicht eine neue Sicht erfordert auch genannt IndexWithCart ?? (Das heißt, dass der Rückgabewert von ActionResult IndexWithCart() rein View (cart) ist) –
Ich habe obige IndexWithCart-Methode so aktualisiert, wie ich sie in meinem Code habe (die Indexansicht wird zurückgegeben) –