Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.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
C# 如何在ASP.NET中命令重新加载页面?_C#_Asp.net - Fatal编程技术网

C# 如何在ASP.NET中命令重新加载页面?

C# 如何在ASP.NET中命令重新加载页面?,c#,asp.net,C#,Asp.net,我正在试图弄清楚如何在用户选择注销时重新加载页面。这涉及到将登录的cookie设置为过期,当页面重新加载时,它将显示为未登录的用户 // expiring the cookie for logout ARCookie.Expires = DateTime.Now; Response.Cookies.Set(ARCookie); 这似乎是一种快速而肮脏的方式,它是以下三种方式之一: // reload the page Response.Redirect(thisPage); //or Serv

我正在试图弄清楚如何在用户选择注销时重新加载页面。这涉及到将登录的cookie设置为过期,当页面重新加载时,它将显示为未登录的用户

// expiring the cookie for logout
ARCookie.Expires = DateTime.Now;
Response.Cookies.Set(ARCookie);
这似乎是一种快速而肮脏的方式,它是以下三种方式之一:

// reload the page
Response.Redirect(thisPage);
//or
Server.Transfer(thispage, false);
//or 
Server.TransferRequest(thispage, false);

以下哪种方法是最好的,或者有没有其他更可取的方法。我在页面对象中找不到任何类型的显式“刷新”命令或操作。是否有一个我可能在某个地方遗漏了?

在HTTP协议中没有“重新加载”。删除cookie后,将浏览器重定向到同一页面可能会起作用。

在HTTP协议中没有“重新加载”。删除cookie后,将浏览器重定向到同一页面可能会起作用。

这似乎是最合理的方法:

Response.Redirect(thisPage);

请记住,在HTTP请求/响应环境中实际上没有“重新加载”的概念。客户端发出请求,服务器返回响应。从客户机的角度来看,“重新加载”是重新发出相同的请求。服务器透视图中的“重新加载”形式是在响应中指示客户端应发出特定请求,即使该请求正好返回到同一页面。重定向响应是服务器表明这一点的标准方式。

这似乎是最合理的方法:

Response.Redirect(thisPage);

请记住,在HTTP请求/响应环境中实际上没有“重新加载”的概念。客户端发出请求,服务器返回响应。从客户机的角度来看,“重新加载”是重新发出相同的请求。服务器透视图中的“重新加载”形式是在响应中指示客户端应发出特定请求,即使该请求正好返回到同一页面。重定向响应是服务器表明这一点的标准方式。

您能插入一些JS代码并将其注册到代码隐藏中吗?请尝试以下操作:

 StringBuilder sb = new StringBuilder("<script ");
 sb.Append(" type=\"text/javascript\">\r\n");
 sb.Append("window.location.reload();\r\n");
 sb.Append("</script>")

 RegisterStartupScript("reload", sb.ToString());
StringBuilder sb=新的StringBuilder(“\r\n”);
sb.Append(“window.location.reload();\r\n”);
某人加上(“”)
RegisterStartupScript(“重新加载”,sb.ToString());

您还可以根据需要使用RegisterClientScriptBlock()。

是否可以插入一些JS代码并将其注册到代码隐藏中?请尝试以下操作:

 StringBuilder sb = new StringBuilder("<script ");
 sb.Append(" type=\"text/javascript\">\r\n");
 sb.Append("window.location.reload();\r\n");
 sb.Append("</script>")

 RegisterStartupScript("reload", sb.ToString());
StringBuilder sb=新的StringBuilder(“\r\n”);
sb.Append(“window.location.reload();\r\n”);
某人加上(“”)
RegisterStartupScript(“重新加载”,sb.ToString());

您还可以根据需要使用RegisterClient ScriptBlock()。

我认为在大多数情况下,您不需要在注销后返回同一页面。改为重定向到主页面,无论用户是否登录,主页面都会显示正确的布局

注销后始终返回当前页面可能会导致意外行为,例如授权失败页面或让用户看到登录用户的页面

所以我认为这三个都不是。也许像

System.Web.Security.FormsAuthentication.SignOut();
return RedirectToAction("Index", "Home");

我认为在大多数情况下,您不需要在注销后返回同一页面。改为重定向到主页面,无论用户是否登录,主页面都会显示正确的布局

注销后始终返回当前页面可能会导致意外行为,例如授权失败页面或让用户看到登录用户的页面

所以我认为这三个都不是。也许像

System.Web.Security.FormsAuthentication.SignOut();
return RedirectToAction("Index", "Home");

我可以,但为什么?我想我不知道“window”对象的“reload”方法,谢谢你,但是我必须先重新加载页面才能注册这个javascript。这将导致页面重新加载两次。这是次优的。@brinky-恐怕你弄错了。发布的代码以C#和ASP.NET为中心。就“fast”而言,这个实例中的速度度量实际上是不确定的,因为他发布的解决方案显示了如何使用JS重新加载页面。因为帖子没有说他打算在哪里重新加载,所以可以安全地假设他将把它放在某个地方重新加载页面,而不会导致无限循环。因此,我认为这个答案是足够的,并且为其他灵活性打开了大门,如果他希望在没有AJAX的情况下动态重新加载。@Cyberherbalist-为什么你说这会让你不得不加载两次页面来注册脚本?将
RegisterStartupScript
RegisterClientScript
块放入
Page\u Load
处理程序,在首次加载页面时注册脚本。如果你在寻找重定向,特别是,那么你应该在你的OP中更加具体。@brinky-ASP.NET不是一种语言,它是一个框架。如果你想说他想要一个使用ASP.NET框架的解决方案,这就是这个解决方案:在ASP.NET框架中,
RegisterStartupScript
RegisterClientScript
都是C#中的方法。这个解既不是钝的,也不是C#中的。如果帖子要求“重定向”,我会同意你的说法,但要求“重新加载”(本质上说,它在最初加载后再次加载-语义),最好的方法是通过JS,除非你希望使用AJAX,这仍然涉及到JS@brinky——事实上,在这个页面上发布的所有解决方案中,只有这个解决方案真正“重新加载”了页面。所有其他没有AJAX的解决方案(同样)都会重定向页面,而不是重新加载页面——即使这意味着它们会重定向到同一页面?我想我不知道“window”对象的“reload”方法,谢谢你,但是我必须先重新加载页面才能注册这个javascript。这将导致页面重新加载两次。这是次优的。@brinky-恐怕你弄错了。发布的代码是C#和ASP.NET-centri