我有两个控制器Home
和BookReservation
,我正在尝试从BookReservation
控制器重定向到Home
控制器的视图而不重定向到主控制器的索引{{1 }。
这是我对if possible
控制器的操作:
BookReservation
函数返回Validate_rules
并将其存储在List<string[]>
tempdata
这里是 [HttpPost]
public ActionResult Validate_Data(ReservationDetails reservation_details)
{
TempData["verification_errors"] = Validate_rules(reservation_details);//this function return List<string[]>
return RedirectToAction("Index");
}
的视图index.cshtml我得到临时数据并显示它的元素:
home
问题是我无法在视图标签内显示
@{ List<string[]> validate_rules = new List<string[]>(); if (TempData["verification_errors"] != null) { validate_rules = (List<string[]>)TempData["verification_errors"]; } } @foreach (var item in validate_rules) { <label >@item[0].ToString() @item[2].ToString()</label> }
元素我不知道从validate_rules
控制器重定向临时数据时出现的问题在哪里?
这是家庭控制器:
BookReservation
任何建议?
答案 0 :(得分:1)
更改此返回RedirectToAction(“索引”);
在Book Reservation控制器中返回RedirectToAction(“Index”,“Home”);
预订控制器 -
[HttpPost]
public ActionResult Validate_Data(ReservationDetails reservation_details)
{
TempData["verification_errors"] = Validate_rules(reservation_details);//this function return List<string[]>
return RedirectToAction("Index", "Home");
}
- 家庭控制器
public ActionResult Index()
{
ViewBag.data= TempData["verification_errors"];
}
- 查看
if (ViewBag.data!= null)
{
var list = ViewBag.data;
foreach (var item in list)
{
<label >@item[0].ToString() @item[2].ToString()</label>
}
}
答案 1 :(得分:1)
问题似乎是一个综合问题,需要分解:
控制器重定向到某个动作,因此绝对应该是:
return RedirectToAction ("YourAnotherAction", "YourAnotherController");
我找不到您要重定向到的Home Controller
的操作。您想避免Index
的{{1}}操作,但不要定义要查看的确切操作。
尝试发送其他数据,并检查您的所有溃败情况是否正常。只需检查您是否正在检查相同的区域,项目等即可。
只需检查Home Controller
是否为空。
最后,Ashkan Mobayen Khiabani提供了一个很好的建议,请检查一下。仍然存在什么问题?他建议将其重定向到其他操作-尝试一下。 希望有帮助。
答案 2 :(得分:0)
您可以使用其路径判断加载哪个视图:
public ActionResult BookReservation()
{
return View("Home/Index");
}
你甚至可以这样做:
public ActionResult SomeAction()
{
if(SomeValue)
return View();
else
return View("Errors/AccessDenied");
}
答案 3 :(得分:0)
TempData
仅保留两个后续请求的信息&amp;通常用于在控制器之间传递数据(重定向)。您可以使用ViewBag
将值传递到视图中:
<强>控制器强>
public ActionResult Validate_Data(ReservationDetails reservation_details)
{
TempData["verification_errors"] = Validate_rules(reservation_details);//this function return List<string[]>
return RedirectToAction("Index");
}
public ActionResult Index()
{
var verification_errors = TempData["verification_errors"];
ViewBag.Errors = verification_errors;
// do something
return View();
}
查看强>
@{
List<string[]> validate_rules = new List<string[]>();
if (ViewBag.Errors != null)
{
validate_rules = (List<string[]>)ViewBag.Errors;
}
}
@foreach (var item in validate_rules)
{
<label>@item[0].ToString() @item[2].ToString()</label>
}
或者只需使用TempData.Keep
在返回视图之前保留内容:
public ActionResult Index()
{
TempData.Keep("verification_errors");
// do something
return View();
}
参考文献: