Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在提交时保留值_Javascript_C#_Asp.net - Fatal编程技术网

Javascript 在提交时保留值

Javascript 在提交时保留值,javascript,c#,asp.net,Javascript,C#,Asp.net,我已经在这上面呆了几天了,因为一开始我很困惑,我在查看回发代码并将我的值存储在一个隐藏字段中,但进一步看,当我按下按钮时,它只是使用了一个doSubmit 我试图存储的值应仅在按下某个按钮时存储,并且一次可能有多个用户使用此网站,因此我无法全局存储它。在某种情况下,如果我可以从.aspx.cs文件中访问此值,则可以使用cookie 我所拥有的: default.aspx <asp:HiddenField id="HiddenValue" value =" "" runat="server"

我已经在这上面呆了几天了,因为一开始我很困惑,我在查看回发代码并将我的值存储在一个隐藏字段中,但进一步看,当我按下按钮时,它只是使用了一个doSubmit

我试图存储的值应仅在按下某个按钮时存储,并且一次可能有多个用户使用此网站,因此我无法全局存储它。在某种情况下,如果我可以从.aspx.cs文件中访问此值,则可以使用cookie

我所拥有的: default.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");
}
其中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号(我试图保留的值),因此在该页面之前不需要显示。