Javascript 在提交时保留值
我已经在这上面呆了几天了,因为一开始我很困惑,我在查看回发代码并将我的值存储在一个隐藏字段中,但进一步看,当我按下按钮时,它只是使用了一个doSubmit 我试图存储的值应仅在按下某个按钮时存储,并且一次可能有多个用户使用此网站,因此我无法全局存储它。在某种情况下,如果我可以从.aspx.cs文件中访问此值,则可以使用cookie 我所拥有的: default.aspxJavascript 在提交时保留值,javascript,c#,asp.net,Javascript,C#,Asp.net,我已经在这上面呆了几天了,因为一开始我很困惑,我在查看回发代码并将我的值存储在一个隐藏字段中,但进一步看,当我按下按钮时,它只是使用了一个doSubmit 我试图存储的值应仅在按下某个按钮时存储,并且一次可能有多个用户使用此网站,因此我无法全局存储它。在某种情况下,如果我可以从.aspx.cs文件中访问此值,则可以使用cookie 我所拥有的: default.aspx <asp:HiddenField id="HiddenValue" value =" "" runat="server"
<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");
}
其中test是ID
doSubmit是一个执行document.form.submit的函数
我对aspx和C真的很陌生,对javascript和jquery也不太在行,但是当dosubmit被注释掉时,我可以看到测试值正在被存储,所以我认为我至少对这一部分是正确的。
当我提交此表格时,如何保持我的价值?这是一个cookie,还是有更聪明的方法来实现这一点?如果您使用的是web表单aspx,则整个页面都会发布回提交页面。因此,您无法将其存储在页面上。您需要将其存储在服务器端,并在每次加载页面时将其返回到页面,或者如您所说,在cookie中
如果我是你,我不会将其存储在cookie中,除非它是一个guid或具有高熵值的东西,因为没有任何东西可以阻止用户更改值,然后提交,这将使您面临安全漏洞
在处理webforms时,一个很好的起点是理解,因为这在MVC框架中是不存在的
为了回答您的问题,如果您需要跨多个页面访问此Id字段,则可以在回传时将其存储在服务器端的会话中。请小心,因为您只希望存储在此处的值与当前会话相关,并且它将在浏览器选项卡等中保持不变
Session["Id"] = //your id
var id = (int)Session["Id"]; // getting it back
如果您只需要id就可以用于当前页面,则可以将其存储在ViewState中。当转到另一个页面时,将重新生成Viewstate,因此您将丢失所有存储的值
ViewState["Id"] = //your id
var id = (int)ViewState["Id"]; // getting it back
老实说,如果你刚开始使用asp.net,最好跳过web表单,直接使用MVC方法。按照今天的标准,Web表单是有限制的,作为初学者,当您达到更高级的要求(如生成动态控件)时,需要花时间学习它的各种怪癖 你想保存什么样的东西?是什么敏感的东西吗?您想对用户保密的内容?您可以将其保存在服务器上并检索它,将其保存为cookie,甚至保存在本地存储中。这取决于目标是什么,不需要保密——这是一个身份证号码。如果用户复制此作业,则新作业将被标记为原始ID号(我试图保留的值),因此在该页面之前不需要显示。