Ich habe eine Listenseite (Index), die eine Liste von Elementen in einem Raster anzeigt. Die Seite besteht aus einem kleinen Formular am oberen Rand und einem Raster (Liste) am unteren Rand. Das Formular dient zum Filtern der in der Liste angezeigten Elemente.So prüfen Sie, ob die Seite als Ergebnis der Formularübermittlung oder auf andere Weise angezeigt wird
Ich muss überprüfen, ob die Seite als Ergebnis des Absendens des Formulars angezeigt wird (Klicken auf eine der 2 Schaltflächen) oder durch Klicken auf einen Link von einer anderen Seite oder durch Eingabe der URL direkt in der Adressleiste des Browsers.
The View:
@model MyNameSpace.ViewModels.FooFilterViewModel
@{
ViewBag.Title = "Foo Listing";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>@ViewBag.Title</h2>
@using (Html.BeginForm("Index", "Home", FormMethod.Get))
{
@Html.ValidationSummary(true)
<!-- Field controls used for filtering go here -->
<input id="ClearFilter" type="button" value="Clear Filter" />
<input id="ApplyFilter" type="submit" value="Apply Filter" />
}
<!-- Grid displaying the list of foos goes here -->
Der Aktions Controller:
public ActionResult Index(FooFilterViewModel fooFilterViewModel)
{
// Retrieve all records
IQueryable<Foo> foos = _DBContext.Foos;
if (ModelState.IsValid)
{
if (/* check if coming from form submission */){
// Do something
}
else
{
// Do something else
}
// Code to filter records go here
foos = foss.Where(f => f...........)
}
fooFilterViewModel.Foos = foos;
return View(fooFilterViewModel);
}
Normalerweise gibt es eine zusätzliche Controller-Aktion mit einer Methodensignatur von 'public ActionResult Index()' und das ist die Methode, die getroffen wird, wenn Sie von einem angeklickten Link oder URL-Eintrag in der Adressleiste weitergeleitet werden. –
Sie müssen nur in Ihrem ViewModel eine Boolesche Eigenschaft hinzufügen, die auf false gesetzt ist. Sie müssen ein verstecktes Feld in Ihrem Formular für diese Eigenschaft auf true setzen. Im Controller überprüfen Sie diese Eigenschaft. Wenn du das nicht schaffst, werde ich dir später ein Beispiel schicken –
Danke @LucianBumb. Ich denke auch daran, versteckte Eigenschaften zu verwenden, wenn ich keine bessere oder elegantere Lösung finden kann. – corix010