#c# #asp.net-mvc #model-view-controller #routes #redirecttoaction
#c# #asp.net-mvc #модель-представление-контроллер #маршруты #перенаправление действия
Вопрос:
Я создал кнопку, которая направляет на другую страницу с 3 вкладками.
Эти 3 вложенные вкладки имеют разный вводимый текст и используют только 1 действие [HttpGet].
Это мои случаи.
- Я хочу сохранить только данные первой вкладки, значение 2 tabs будет равно null
- Я хочу сохранить только вторые данные, 1-я вкладка и 3-я вкладка будут равны нулю
- Я хочу сохранить весь введенный мной текст на 1-й вкладке, 2-й вкладке и 3-й вкладке.
Вот мой код:
[HttpGet]
public ActionResult Create_Data(int productId)
{
var model = BigViewModel();
///rest of code
return View(model)
}
[HttpPost]
public ActionResult Create_Data(BigViewModel model, int productId)
{
int experimentForOverloading = 0;
string experimentAgain = ""
// validates if first tab and doesn't have data inputted, will redirect to Create_SecondTab. Below is just for testing
if (model.FirstTabName == null amp;amp; model.ThirdTabDirectory == null)
{
// this is where I want to go to route the new Action. But I don't know what to do..
return RedirectToAction("CreateData", new
{
model = BigViewModel,
Id = productId,
experimentForOverloading
}
}
else if (model.SecondTabSalary == null amp;amp; model.ThirdTabDirectory == null)
{
return RedirectToAction("CreateData", new
{
model = BigViewModel,
Id = productid
experimentAgain
}
}
else
{
return RandomView(); //Testing purposes
}
}
// This is the second case, save only when first tab is empty
[HttpPost]
public ActionResult CreateData(BigViewModel, int bigId, int experimentForOverloading)
{
if(ModelState.IsValid)
{
//.. code here
_context.SaveChanges()
}
else
{
return RandomView(); //Testing purpose
}
}
// This is the first case, save only when second and third tab is empty
[HttpPost]
public ActionResult CreateData(BigViewModel, int bigId, string experimentAgain)
{
if(ModelState.IsValid)
{
//.. code here
_context.SaveChanges()
}
else
{
return RandomView(); //Testing purpose
}
}
Комментарии:
1. Вы не можете перенаправить на сообщение. Веб-браузеры не справляются с этим надежно.
2. MVC следует шаблону PRG (Post-Redirect-Get) для схемы перенаправления. После запроса POST вы должны использовать
RedirectToAction
для перенаправления на контроллер, который использует метод GET для отображения другой страницы.