隐藏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个链接都将使用相同的存储过程,唯一的区别是传递的参数。
有一种可能性,在未来,某些用户不应该看到某些东西…但是,如果他们所要做的只是改变参数号,看看应该隐藏什么,这可能是一个问题。
另外,我不希望发送的参数可能会"崩溃"任何东西
提前感谢您的帮助!
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);
}