如何解决将数据参数传递给新的 MVC ActionResult 调用而不显示在 URL 中
我正在添加一个新的 MVC 页面并启动并运行该方法和调用。我的问题是我不想传入 URL 参数以显示在我的页面中,但需要在重定向到新页面时传入该方法的参数。目前我的设置如下:
Page.cs
void ToNewPage()
{
Response.RedirectToRoute(new { controller = "ControllerName",action = "ActionName",ID1 = 1,ID2 = 2 });
}
ControllerName.cs
public ActionResult ActionName(int ID1,int ID2)
{
...
return View(model);
}
目前使用我的代码,我得到了 URL ~/ControllerName/ActionName?ID1=1&ID2=2。我只是希望 URL 只是 ~/ControllerName/ActionName。我知道这在前端或通过 javascript 会更容易,但如果可能,需要从 ToNewPage 方法执行此操作。
解决方法
有工作代码:
PageController.cs
public class PageController : Controller
{
// GET: Page
public ActionResult Index()
{
return View();
}
public ActionResult ToNewPage()
{
var ids = Newtonsoft.Json.JsonConvert.SerializeObject(new { ID1 = 1,ID2= 2 });
TempData["ids"] = ids;
return RedirectToAction("Index","NewPage");
}
}
NewPageController.cs
public class NewPageController : Controller
{
// GET: NewPage
public ActionResult Index()
{
if (TempData["ids"] != null)
{
dynamic ids = JsonConvert.DeserializeObject(TempData["ids"] as string);
ViewBag.ID1 = ids.ID1;
ViewBag.ID2 = ids.ID2;
}
return View();
}
}
NewPage\Index.cshtml
@{
ViewBag.Title = "Index";
}
<h2>NewPage</h2>
<ul>
<li>ID1: @ViewBag.ID1</li>
<li>ID2: @ViewBag.ID2</li>
</ul>
,
您应该使用 TempData:
void ToNewPage()
{
TempData["ID1"]="ID1 Value"
TempData["ID2"]="ID2 Value"
Response.RedirectToRoute(new { controller = "ControllerName",action = "ActionName"
});
}
public ActionResult ActionName()
{
int ID1=int.parse(TempData["ID1"].ToString());
int ID2=int.parse(TempData["ID2"].ToString());
return View();
}
你可以在很多控制器中填充很多 TempData 并在很多视图和控制器中使用它们
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。