/ / MVC jak zaimplementować dwa różne działania po - asp.net-mvc

MVC, jak wdrożyć dwie różne akcje po - asp.net-mvc

Rozwijam tę naprawdę ważną aplikację wiewiórki.

Istnieje kreator, w którym wiewiórki są dodawane do bazy danych.

Powiedzmy, że ten kreator ma trzy ekrany:

  1. Szczegóły nazwy wiewiórki
  2. Wzrost i waga
  3. Przechowywanie nakrętek

Tak więc na każdym etapie kreatora chcę zapisać szczegóły w bazie danych.

Widok Wzrost i waga wygląda następująco:

@model HeightWeightViewModel
@{
ViewBag.Title = "Height and weight";
}

<h2>Height and weight</h2>

@using (Html.BeginForm()) {

<h3>Height</h3>
<div>
@Html.EditorFor(model => model.Squirrel.Height)
</div>

<h3>Weight</h3>
<div>
@Html.EditorFor(model => model.Squirrel.Weight)
</div>
<input type="submit" value="Previous" />
<input type="submit" value="Next" />
}

Mam więc nadzieję, że przyciski Wstecz i Dalej będą działaćzapisz te szczegóły. Przycisk Poprzedni podczas zapisywania zabierze również użytkownika na stronie szczegółów nazwy wiewiórki. Następny zapisze i zaprowadzi użytkownika do strony przechowywania nakrętek.

Mam przycisk Dalej działający przy użyciu:

public ActionResult Edit(SquirrelViewModel squirrelViewModel)
{
_unitOfWork.SaveHeightWeight(squirrelViewModel);

return RedirectToAction("Edit", "NutStorage", new { id = squirrelViewModel.Squirrel.Id });
}

Tak więc przycisk Dalej zapisuje szczegóły i wysyła użytkownika do strony NutStorage.

Przycisk Poprzedni działa tak samo jak Dalej, ale tak naprawdę chcę, aby po zapisaniu wysłał użytkownika do pierwszego kroku Kreatora.

Nie jestem pewien, jak to zrobić. Czy miałbym inną metodę, aby opublikować w poprzedniej?

Nie mogę sobie wyobrazić, jak to zaimplementować.

Może powinienem używać ActionLinks zamiast przycisków przesyłania, ale to nie opublikowałoby szczegółów do zapisania.

Czy ktokolwiek może zasugerować, jak uzyskać poprzedni przycisk, aby zapisać i wysłać użytkownika do pierwszej strony kreatora, gdy jest nieruchomy czy działa funkcja Next?

Odpowiedzi:

10 dla odpowiedzi № 1

Możesz ustawić nazwę przycisków przesyłania:

<input type="submit" name="direction" value="Previous" />
<input type="submit" name="direction" value="Next" />

Następnie dodaj tę nazwę jako parametr dla akcji kontrolera i przetestuj jej wartość, aby określić, co zrobić:

public ActionResult Edit(SquirrelViewModel squirrelViewModel, string direction)
{
_unitOfWork.SaveHeightWeight(squirrelViewModel);

if (direction == "Next")
return RedirectToAction("Edit", "NutStorage", new { id = squirrelViewModel.Squirrel.Id });
if (direction == "Previous")
return RedirectToAction("Edit", "SquirrelName", new { id = squirrelViewModel.Squirrel.Id });
return View();
}