自动将ASPX页面重定向到CSHTML并传递数据

时间:2014-06-12 22:55:26

标签: asp.net asp.net-mvc-4 razor webmatrix

我有一个ASPX页面,可以在加载时获取访问者域名。 然后我需要自动将访问者转移到另一个页面(CSHTML)并传递他们的用户名。

我找到了一种方法,使用下面的ASP代码将用户和变量传输到另一个CSHTML页面。这可能不是最好的方式,但它是我能想到的(刚开始使用ASP)

我的问题是,是否有可能做同样的事情,ASPX将自动重定向到另一个页面并传递变量但不在URL中?我不想在URL中传递用户名,因为以后可以由任何人更改该参数。

所以我的要求是(1)在加载时自动从ASPX页面转到CSHTML页面,而无需用户点击任何内容和(2)将变量传递给CSHTML页面而不是URL中

<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Environment" %>
<%@ Import Namespace="System.Security" %>
<%@ Import Namespace="System.Security.Principal.WindowsIdentity" %>


<script runat="server" language="VB">

'On page load
Sub Page_Load()
Response.Write("<HTML>")
Response.Write("<HEAD>")
Response.Write(String.Format("<meta http-equiv=""refresh"" content=""0; url=http://iisserver/cshtmlpages/target_page.cshtml?authuser="))
Response.Write(Context.User.Identity.Name)
Response.Write(String.Format(""" />"))
Response.Write("</HEAD>")
Response.Write("</HTML>")
End Sub
</Script>

3 个答案:

答案 0 :(得分:0)

将某人发送到另一个页面要简单得多。使用Response.Redirect。

<script runat="server" language="VB">
'On page load
Sub Page_Load()
Response.Redirect("mypage.html")
End Sub
</Script>

我不确定您如何在不将其放入网址的情况下传递变量?您需要更新您的问题,说明您希望如何执行此操作,例如会话或Cookie。但实际上,将它放在查询字符串(URL)中是最简单的。

答案 1 :(得分:0)

如果要将值从一个应用程序/页面传递到另一个应用程序/页面,则必须通过请求字符串,cookie或会话来完成。您不必自己传递数据,而是可以传递某种类型的令牌。

一个原始示例是生成一个guid并将其与用户名或其他声明一起存储在表中,并将其传递到请求URL中,另一方可以从数据库中检索该数据并使令牌过期

会话

存储Session variables in ASP.NET MVC 。这仅在两个页面位于同一服务器上并且页面可能必须属于同一应用程序时才有效。但它相对安全,用户无法触及。

Coookies

Using cookie in asp.net mvc c#

答案 2 :(得分:0)

您可以将数据从客户端发回到cshtml页面。这会将authuser值保留在url querystring之外。

<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Environment" %>
<%@ Import Namespace="System.Security" %>
<%@ Import Namespace="System.Security.Principal.WindowsIdentity" %>

<script runat="server" language="VB">

'On page load
Sub Page_Load()
   Response.Write("<HTML>")
   Response.Write("<HEAD>")
   Response.Write("</HEAD>")
   Response.Write("<body onload='document.forms[""form""].submit()'>")
   Response.Write("<form name='form' action='http://iisserver/cshtmlpages/target_page.cshtml' method='post'>")
   Response.Write("<input type='hidden' name='authuser' value='{0}'>", Context.User.Identity.Name)
   Response.Write("</form>");
   Response.Write("</body>")
   Response.Write("</HTML>")
   Response.End()
End Sub
</Script>