在重定向时隐藏来自Url的Action方法参数

时间:2018-03-13 16:24:43

标签: asp.net-mvc

我在这里解释一个在开发过程中需要多次面对的案例。

假设有一个html表,其中包含带有编辑和删除选项的数据和列。 enter image description here

我使用内联javascript方法编辑和删除每行的编辑和删除图标。

<a class="fa fa-pencil xxx" title="Edit" href="javascript:;" onclick="Edit(79);" style="padding:0 2px;"></a>

点击编辑图标将打开表格,用户可以更改/编辑值并保存。让我的Edit函数是这样的。

function Edit(Id) {
            window.location.href = "/FIID/edit?id="+Id;
}

我的问题是它会在Url中显示不被接受的ID。

我尝试了另一种解决方案。首先在ajax调用中,我在id中设置Session,然后重定向到编辑页面。

function Edit(cellvalue) {
    $.ajax({
        url: '/FIID/SetcurrentID',
        data: { user: cellvalue },
        datatype:"json",
        success: function (data) {
            window.location.href = "/FIID/edit";
        }
    });
}

内部SetcurrentID操作方法我将ID存储在Session中,然后在编辑操作方法上使用此会话值,加载相应的用户进行编辑。因此,ID未显示在Url中。

我的问题是:

  1. 这是一个好方法吗?
  2. 其他可能的解决方案是什么?

1 个答案:

答案 0 :(得分:1)

无论是在html中设置还是在url查询字符串中设置,id都将始终可用。

如果您的业务要求不是识别您的ID,那么我建议您在将其发送到浏览器之前在服务器上对其进行加密。然后,当您编辑时,将其发回给您帖子上的服务器。请记住,它会被加密。然后,在服务器端,您可以解密该值并根据需要使用它。

一个选择是RSACryptoServiceProvider,但是甚至加密id你应该在服务器端对它们进行验证,以避免有人发送一个可能影响其他数据的ID,然后是你要更改的数据。