2016-11-08 1 views
0

Ich habe die folgende Aktion:Aktion findet nicht anzeigen oder seinen Master

public class ArticlesController : Controller 
{ 

    public ActionResult Article01() 
    { 
     return View(); 
    } 
} 

die den Blick zurück und alles scheint gut zu funktionieren.

Jetzt versuche ich Action hinzuzufügen:

[ActionName("bla-bla-article-1")] 
    public ActionResult Article01() 
    { 
     return View(); 
    } 

Nun ruft: 'Die Ressource kann nicht gefunden werden'/Artikel/Article01

kehrt

Jetzt versuche ich dies:

[ActionName("bla-bla-article-1")] 
public ActionResult Article01() 
{ 
    return View("~/Content/Views/Articles/Article01.cshtml"); 
} 

Und hier bekomme ich:

Die Ansicht '~/Content/Ansichten/Artikel/Article01.cshtml' oder seinen Meister war nicht Die gefundene oder keine View-Engine unterstützt die gesuchten Orte. Die folgenden Stellen wurden gesucht: ~/Content/Ansichten/Artikel/Articles01.cshtml

+0

Ihre Wirkung auf die URL wird '/ Artikel/bla-bla-Artikel-1 'nicht'/Artikel/Article01 ' – Liam

+0

Ihr zweiter Fehler besagt, dass die Ansicht nicht existiert. Wenn Ihr Controller "Artikel" heißt, suchen Sie in einem Artikel ** s (Plural) Ordner, der wahrscheinlich Ihr Problem ist – Liam

+0

Grundsätzlich 'return View (" ~/Inhalt/Views/Article/Article01.cshtml ");' sollte repariere es – Liam

Antwort

1

Sie müssen erkennen, dass standardmäßig den Namen der Methode ist auch der Aktionsname. Sobald Sie jedoch diese Konvention außer Kraft setzen, indem Sie das Attribut [ActionName] verwenden, kann sich auch die URL ändern, über die Sie auf die Aktion zugreifen.

In Ihrem Fall, die wahrscheinlich wäre:

/Artikel/bla-bla-Artikel-1

Und wenn Sie return View() mit sind, ohne die Sicht Namen angeben, es ist sein wird automatisch aus den aktuellen Routenparametern ermittelt, und nach dem Anwenden Ihres Attributs lautet der Wert bla-bla-article-1.

Deshalb sollten Sie es explizit angeben:

return View("Article01"); 

Siehe MSDN

Verwandte Themen