让我首先尝试在此处设置方案。 这是使用ASP.NET 4.0,MVC3和C#完成的。

我有一个图片库。 我在图片库中有相册的经理。 每个画廊都有一组页面。

当我使用相册管理器时,视图将显示当前相册的列表。

在相册列表中,可以选择编辑,删除或管理该相册中的页面。

选择管理相册的页面时,会有一个页面列表,每个页面都有编辑,删除和查看。

当选择页面的编辑按钮,然后进行编辑然后保存时,遇到了我的问题。

从相册列表中转到要管理的页面列表的按钮可通过帖子发送ID,以隐藏相册ID和其他参数。

因此,页面视图是通过[HttpPost]控制器生成的。 然后,从管理页面的视图中,单击编辑按钮时,出于相同的原因(隐藏参数),从[HttpPost]控制器生成用于编辑的页面。

这是问题所在:在编辑视图中单击“保存”按钮后,数据会通过[HttpPost]发布到保存更改控制器,但我不想返回编辑视图(刷新会重新发布更改,这并不是最好的方法)实践)。 我想返回到所选专辑的页面列表。 为此,我使用来自编辑控制器的[HttpPost]重定向回[HttpGet]控制器,以查看列出所选专辑页面的视图。 当我这样做时,呼叫看起来像这样:

return RedirectToAction("ManagePages", new { albumId = model.AlbumId });

不幸的是,这使该URL具有显示的相册ID: http:// XXX / ManagePages?AlbumId = 56

如何在不显示参数列表中显示专辑ID的情况下,返回到同一选定专辑的ManagePages视图?

===============>>#1 票数:1 已采纳

您可以在执行重定向之前使用以下方法将专辑ID存储在TempData中:

TempData["AlbumId"] = model.AlbumId;
return RedirectToAction("ManagePages");

然后,在ManagePages GET操作中,您可以读取id的内容:

int albumId = (int)TempData["AlbumId"];

注意:读取ID后,将清除TempData [“ AlbumId”]的内容。


更新:

实际上,如果您使用TempData并且用户单击刷新,则刷新时数据将丢失。 因此,您可以改用Session:

Session["AlbumId"] = model.AlbumId;
...
int albumId = (int)Session["AlbumId"];

===============>>#2 票数:0

在执行RedirectToAction之前,您可以设置带有专辑ID的Cookie。 然后,在ManagePages操作中阅读它。

但是,值得一提的是,如果您对内部标识在外部是敏感的,则您的应用程序仍会通过HTML源公开它们。 除非您具有某种身份验证机制,否则其他用户可以使用它们查看他们不应该使用的数据。

===============>>#3 票数:0

您可以将ID隐藏在TempData变量中。 TempData通过一次重定向保持。

  ask by Travis J translate from so

未解决问题?本站智能推荐:

1回复

ASp.MVC HTTP发布未重定向到操作

我的控制器中有2个索引方法,其中一个是GET,另一个是在页面上的窗体上使用的POST。 当我提交表单时,页面刷新时,它显示空白页面,而不是通过我的GET index方法运行,理想情况下是重新加载该页面。 开机自检方法 获取方法
2回复

如何重定向具有错误角色的用户(已登录)以查看页面?

我想将角色不正确的用户发送到另一个页面,但是当我使用时: 我得到错误: 这是因为我使用的是http GET而不是http POST吗? 这是我的代码: 在这种情况下,如何根据用户角色重定向用户?
2回复

在Asp.Net MVC 3中重定向到移动页面

我正在尝试对Asp.Net MVC应用程序使用其他登录页面,该页面已修改为适合移动设备(主要是iPhone / Android)。 我基本上只需要修改登录视图,因为实际内容在应用程序的特定部分中,因此我并不是要制作整个网站的移动版本。 因此,我尝试遵循以下步骤: http : //www
2回复

提交表单后,在HttpGet中获取模型项到HttpPost-ASP.NET MVC 3

我在处理某事时遇到了麻烦。 我有一个像这样的HttpGet方法: 在我的模型中: 在我看来,我有一个表格: 问题是在提交表单后,model.something返回为null而不是我期望的值,即“ hi” 这是我的HttpPost 谁能帮我这个? 表单
3回复

在RedirectToAction调用中传播QueryString参数

我想确保QueryString中的一个特定参数,在我的例子中, request_id被传播到重定向的动作。 比方说,我有一个行动First , 现在说,第First回发在QueryString有一个参数,我想传递给Second动作。 一种方法是在RedirectToAction调
1回复

发布后从控制器返回partial时,jQuery无法在javascript中工作

我正在Visual Studio中制作一个asp.net项目。 我有两个控制器函数[HttpGet] AccountCreate和[HttpPost] AccountCreate。 Get返回带有模型AccountCreatePageModel的PartialView。 一切都在这里工作,
4回复

Response.Redirect将数据POST到ASP.NET中的另一个URL

我想将响应重定向到另一个URL,同时它的HTTP头中包含一些POST数据。 如何在ASP.NET中执行此操作?
1回复

窗体上的ASP.NET MVC 4部分视图发布方法

我有一个名为_GetForfaitDashBoard.cshtml的局部视图,这是代码 这是我要统计的表格。 我要做的是将这些统计信息加载到基于Form的网页中,该表单将包含一个简单的下拉列表,以供用户选择所需的统计信息类型。 这是部分View Action的代码: 现在我不
4回复

MVC 3重定向不起作用

我有一个与动作重定向有关的小问题。 我想防止用户使用BaseController类(这是我所有控制器的基类)中的OnActionExecuting覆盖来访问有关站点中特定区域的信息。 方法主体: 但是,这不会重定向到指定的操作。 我究竟做错了什么? 你们会建议其他什么方法?
1回复

自定义RedirectToAction。 从课程重定向?

我有一个运行某些功能的类,有时会发生错误,我想重定向到我的errorController,但不能这样做,因为这是在单独的类中。 有没有一种方法可以使用redirectToAction或类似的方法移动到我的errorContorller? 我尝试了此操作,但无法重定向,尽管代码运行了却