web-dev-qa-db-de.com

Umleitung von der cshtml-Seite

Ich möchte je nach Ergebnis eines Datensatzes zu einer anderen Ansicht umleiten, aber ich kehre ständig zu der Seite zurück, auf der ich mich gerade befinde, und kann nicht herausfinden, warum. Ich falle in der if-Anweisung ein, die Aktion wird aufgerufen, aber sobald ich die Ansicht auf die neue Seite zurückgestellt habe, kehre ich wieder zur aktuellen Seite zurück.

CSHTML-Seite

@{
ViewBag.Title = "Search Results";
EnumerableRowCollection<DataRow> custs = ViewBag.Customers;

bool anyRows = custs.Any();
if(anyRows == false)
{


    Html.Action("NoResults","Home");


}
// redirect to no search results view

}

Regler

 public ActionResult NoResults()
    {
       return View("NoResults");

    }

Ich kann nicht zu viel sehen ..

@{
ViewBag.Title = "NoResults";
 }

<h2>NoResults</h2>
24
Jed I

Ändern Sie dies:

@{ Response.Redirect("~/HOME/NoResults");}
51

Wäre sicherer, dies zu tun.

@{ Response.Redirect("~/Account/LogIn?returnUrl=Products");}

Daher wird auch der Controller für diese Aktion ausgeführt, um jedes Modell zu füllen, das die Ansicht benötigt.

Quelle
Von einer Ansicht zu einer anderen Ansicht umleiten

Obwohl wie @Satpal erwähnt, empfehle ich Ihnen die Umleitung auf Ihrem Controller.

7
Madushan

Dies ist eindeutig ein ungünstiger Fall von Steuerungslogik in einer Ansicht. Es ist besser, dies in einem Controller durchzuführen und die gewünschte Ansicht zurückzugeben.

[ChildActionOnly]
public ActionResult Results() 
{
    EnumerableRowCollection<DataRow> custs = ViewBag.Customers;
    bool anyRows = custs.Any();

    if(anyRows == false)
    {
        return View("NoResults");
    }
    else
    {
        return View("OtherView");
    }
}

Ändern Sie NoResults.cshtml in einen Teil.

Und nennen Sie dies als Teilansicht in der übergeordneten Ansicht

@Html.Partial("Results")

Möglicherweise müssen Sie die Kundensammlung als Modell an die Ergebnisaktion oder in einem ViewDataDictionary übergeben, und zwar aus folgenden Gründen: ViewBag kann nicht in einer Teilansicht in ASP.NET MVC3 angezeigt werden

Das ChildActionOnly-Attribut stellt sicher, dass Sie diese Seite nicht durch Navigieren aufrufen können und dass diese Ansicht als Teilansicht, also durch eine übergeordnete Ansicht, dargestellt werden muss. cfr: Verwenden von ChildActionOnly in MVC

1
Gecko IT

Sie können zur Methode desselben Controllers gehen .. Verwenden Sie diese Zeile, und wenn Sie dieser Aktion einige Parameter übergeben möchten, können Sie dies tun, indem Sie in (new {}) ...__ schreiben. Hinweis: - Sie können beliebig viele hinzufügen Parameter nach Bedarf.

@ Html.ActionLink ("MethodName", neuer {Parameter = Model.parameter})

0
sachin singh