繁体   English   中英

ASP.NET 在回发中持久化查询字符串参数的最佳实践是什么

[英]What is the best practice in ASP.NET for persisting query string parameters in postbacks

想知道在 ASP.NET web 应用程序中是否存在将查询字符串变量持久化到回发的最佳实践。 如我所见,您可以:

  1. 只需在回发中再次从查询字符串中获取它
  2. 在初始加载时将其存储在 ViewState 中,并在回发中从那里使用它
  3. 在初始加载时将其设置在隐藏的输入(或类似的东西)中,并在回发中从那里使用它

这个比那个好吗? 还有比这三种更好的方法吗?

使用#1 - 即使有人在浏览器中修改 URL 然后单击按钮以触发回发,回发中的查询字符串仍将具有原始 ID,因为 URL 存储在标签的 action 属性中

使用#3 - 可以通过 javascript 或 jQuery 在页面上更改值 - 所以我怀疑这不是最佳解决方案,除非您的场景特别要求能够更改前端页面上的值

例如,假设页面使用查询字符串中的 ID 从数据库加载一些数据,然后希望在用户单击按钮时使用该 ID 将其保存回数据库(回发)

protected void Page_Load(object sender, EventArgs e)
{
  if (!Page.IsPostBack)
  {
    // #1 - get it from the query string
    string ID_1 = Request.QueryString["id"];

    // #2 - save it to the ViewState
    ViewState["ID_2"] = Request.QueryString["id"];

    // #3 - save it to a input type=hidden or something similar
    txtSomeHiddenInput.Value = Request.QueryString["id"];

    // ... look up data in a database using the ID
  }
}

protected void btnSave_Click(object sender, EventArgs e)
{
  // #1 above
  string sID1_Postback = Request.QueryString["id"];

  // #2 above
  string sID2_Postback = (string)ViewState["ID_2"];

  // #3 above
  string sID3_Postback = txtSomeHiddenInput.Value;

  // ... save data in database using the ID
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM