隐藏ActionLink中的参数值

本文关键字:参数 ActionLink 隐藏 | 更新日期: 2023-09-27 18:13:51

我在局部视图中有以下代码:

<li>@Html.ActionLink("Text", "ViewName", "ViewFolder", new { param = 0 }, null)</li>

当我将鼠标悬停在链接上时,我可以在浏览器中看到正在使用的参数

http://localhost:49781/ViewFolder/ViewName?param=0

是否有一种方法可以对用户隐藏此信息?我不希望他们复制粘贴url并开始为参数输入自己的值。

我使用参数的原因是因为我的模型需要知道要执行哪个存储过程。有5个链接都将使用相同的存储过程,唯一的区别是传递的参数。

有一种可能性,在未来,某些用户不应该看到某些东西…但是,如果他们所要做的只是改变参数号,看看应该隐藏什么,这可能是一个问题。

另外,我不希望发送的参数可能会"崩溃"任何东西

提前感谢您的帮助!

隐藏ActionLink中的参数值

URL参数是很好的,如果用户想要书签一个页面,或用户能够按后退按钮返回页面后,他们导航离开。

您可以通过其他方式(通过POST或cookie或其他方式)传递数据,但如果它是指向页面的链接,则不需要。

如果他们碰巧弄乱了你的URL(无论是有意或不复制粘贴整个URL)和系统崩溃(优雅我希望,所以你的404页面是有样式的,有一个链接回到主页等)-如果它没有搞乱你的数据库-那绝对没问题!当他们弄乱URL时,他们不应该感到惊讶,如果他们足够聪明,知道如何正确编辑URL,那就给他们力量吧!

相反,我只想确保参数是您期望的值,如果不是,则相应地中断或重定向到一个有效的页面。

下面是检查参数是否有效的示例。如果不是,则返回404,否则执行一些操作。

public ActionResult ViewName(int param) {
    if (!CheckIfParamIsValid(Id)) {
        // Do the thing you want to do, if the value is not valid, e.g. throw a page not found/404.
        return new HttpNotFoundResult("No data found for param " + param);
    }
    var model = /*Go get your data using the param, knowing that it's now safe */
    return View(model);
}
/// <summary>
/// Function to check if your param is a value you expect to receive or not
/// </summary>
/// <param name="param">the value you are testing, hopefully called something more descriptive than 'param')</param>
private bool CheckIfParamIsValid(int param) { 
    //Example logic for checking if the param's between 1-5
    return Enumerable.Range(1,5).Contains(param);
}