【问题标题】:Keeping a value on submit在提交时保持价值
【发布时间】:2020-01-17 16:37:01
【问题描述】:

我已经坚持了几天,因为我最初很困惑并查看回发代码并将我的值存储在隐藏字段中,但进一步查看它只是在我按下时使用“doSubmit”按钮。

我试图存储的值应该只在按下某个按钮时存储,并且多个用户可能同时使用这个站点,所以我不能全局存储它。如果我可以从我的 .aspx.cs 文件中访问此值,则在某种 cookie 中可能是可能的。

我有什么: 默认.aspx

<asp:HiddenField id="HiddenValue" value =" "" runat="server"/> 
//This may have to be changed to a standard hidden input field

<input name="button1" type="button" class="btn submitter" id="button1" 
value="Copy" title="Create a copy of this id" onclick="SaveId(); doSubmit(); />

function SaveId() {
        $('#<%=hiddenValue.ClientID%>').val("test");
}

其中“测试”是 ID。

doSubmit 是一个执行 document.form.submit() 的函数

我对 aspx 和 C# 真的很陌生,并且在 javascript 和 jquery 方面不是很好,但是我可以看到当 dosubmit 被注释掉时存储的测试值,所以我认为我至少有这部分是正确的。 当我提交此表格时,保持我的价值的最佳方式是什么?它是 cookie 还是有更聪明的方法来做到这一点?

【问题讨论】:

  • 你想保存什么样的东西?是不是很敏感?您想对用户保密的事情?您可以将其保存在服务器上并检索它,将其保存为 cookie 甚至本地存储。这取决于真正的目标是什么
  • 它不需要保密 - 它是一个 ID 号。如果用户复制此作业,则新作业将使用原始 ID 号(我试图保留的值)进行标记,因此在该页面之前不需要显示。

标签: javascript c# asp.net


【解决方案1】:

如果您使用网络表单 (aspx),则整个页面会在提交时发回。所以你不能将它存储在页面上。您需要将其存储在服务器端并在每次页面加载时将其返回到页面,或者如您所说,在 cookie 中。

如果我是你,我不会将它存储在 cookie 中(除非它是一个 guid 或具有高熵值的东西),因为没有什么可以阻止用户更改值然后提交这会让你打开安全漏洞。

处理网络表单的一个很好的起点是了解page life cycle,因为这是 MVC 框架中不存在的东西。

为了回答您的问题,如果您需要跨多个页面访问此 Id 字段,您可以在回发时将其存储在服务器端的 session 中。请小心,因为您只希望此处存储的值与当前会话相关,并且它将在浏览器选项卡等中持续存在。

Session["Id"] = //your id

var id = (int)Session["Id"]; // getting it back

如果您只需要 id 可用于当前页面,则可以将其存储在 ViewState 中。转到另一个页面时会重建视图状态,因此您将丢失所有存储的值。

ViewState["Id"] = //your id

var id = (int)ViewState["Id"]; // getting it back 

老实说,如果您刚开始使用 asp.net,最好跳过 Web 表单并直接使用 MVC 方法。按照今天的标准,Web 表单具有限制性,作为初学者,当您遇到更高级的要求(例如生成动态控件)时,将需要时间来了解其各种怪癖。

【讨论】:

    猜你喜欢
    • 2013-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-14
    • 1970-01-01
    • 1970-01-01
    • 2015-06-20
    • 2022-11-27
    相关资源
    最近更新 更多