微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将数据参数传递给新的 MVC ActionResult 调用而不显示在 URL 中

如何解决将数据参数传递给新的 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 举报,一经查实,本站将立刻删除。