【发布时间】:2021-10-05 17:21:22
【问题描述】:
无法获取控制器操作以将值传递给另一个。参数正确传递,但值保持为空。 代码:需要从 Display() 中获取 selectregister 的值,并根据它获取信息。信息被分配给 ViewList expandoobject 并传递给 Index()。
[HttpGet]
public ActionResult Index(Expandoobject vl)
{
ViewList = vl;
if (((IDictionary<String, object>)ViewList).ContainsKey("Applist"))
{
ViewList.chk = "Yes";
}
else
{
getbasics(ViewList);
}
ViewList.RegList = GetAllregList(A, B);
return View("Index", ViewList); //default view
}
[HttpPost]
public ActionResult Display(string selectRegister)
{
ViewList.reg = selectRegister;
ViewList.Applist = ReadAPIinfo(A, selectRegister);
return RedirectToAction("Index", ViewList);
}
在上面的代码中,参数 ViewList.reg、ViewList.Applist 通过 ExpandoObject vl 作为空值传递。为了绕过这一点,我目前将所需的值存储在会话变量中并以迂回方法解决。想了解 MVC.TIA 中的参数传递是如何工作的(对于动态扩展对象)! 注意:我使用了其他一些类似线程中建议的 TempData[] 解决方案,但不适用于我的 ExpandoObject 变量。
【问题讨论】:
-
对于控制器到控制器或操作到操作,您可以使用 TempData 或 Session。 ViewData,ViewBag 仅从控制器工作到视图。
-
是同一个控制器吗?
-
是的,它在同一个 Homecontroller 中
-
Vaibhav Deshmukh - 感谢您的回复。我将我的动态 expandoobject 命名为 ViewList 并在同一个控制器中声明它 - public dynamic ViewList = new ExpandoObject();还是不能在控制器内部传递?
标签: asp.net-mvc model-view-controller dynamic expandoobject redirecttoaction