ASP .NET MVC Redirecttoaction 将参数传递给 Index 但值为空
Posted
技术标签:
【中文标题】ASP .NET MVC Redirecttoaction 将参数传递给 Index 但值为空【英文标题】:ASP .NET MVC Redirecttoaction passing parameters to Index but values are null 【发布时间】: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();还是不能在控制器内部传递? 【参考方案1】:由于两个动作都在同一个控制器中,最简单的方法是
public ActionResult Display(string selectRegister)
.....
return Index( ViewList);
【讨论】:
谢谢!当我实现这个时,编译器编译没有任何错误,但动态变量抛出执行错误:“'Microsoft.AspNetCore.Mvc.ControllerBase.RedirectToAction(string)'的最佳重载方法匹配有一些无效参数” @Sheva 抱歉,我的代码中没有任何重定向。您一定忘记删除上一个。以上是关于ASP .NET MVC Redirecttoaction 将参数传递给 Index 但值为空的主要内容,如果未能解决你的问题,请参考以下文章
七天学会ASP.NET MVC ——ASP.NET MVC 数据传递
ASP.NET MVC 5、ASP.NET Core MVC 5 有啥区别?