net如何在aspx页面中将html页面快速的加入runat,关于asp.net:如何将一个FORM从HTML发布到ASPX页面...

如何将表单从HTML页面发布到ASPX页面(2.0)并能够读取值?

我目前有一个使用成员资格提供程序的ASP.NET站点,一切正常。 用户可以从Login.aspx页面登录。

我们现在希望能够让用户直接从另一个网站登录 - 这基本上是一个静态HTML页面。 用户需要能够在此HTML页面上输入他们的名称和密码,并将其POST到我的Login.aspx页面(我可以在其中手动登录)。

是否可以将表单值从HTML传递到ASPX? 我已经尝试了一切,Request.Form.Keys集合总是空的。 我不能使用HTTP GET,因为这些是凭据,不能在查询字符串上传递。

我所知道的唯一方法是iframe。

这不是Jeff在他关于CSRF和XSRF攻击的文章中所警告的那种事情吗?http://www.codinghorror.com/blog/archives/001175.html

我很惊讶没有人提到这一点,但是http POST并不比GET更安全。 我建议不要这样传递凭据。 这里有很多想法和信息:stackoverflow.com/questions/1008668/how-secure-is-a-http-post

这很有可能。我嘲笑了3页,应该给你一个概念证明:

.aspx页面:

代码背后:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

For Each s As String In Request.Form.AllKeys

Response.Write(s &":" & Request.Form(s) &"
")

Next

End Sub

单独的HTML页面:

......并按预期反刍形式值。如果这不起作用,正如其他人所建议的那样,使用流量分析工具(fiddler,ethereal),因为某些东西可能不会出现在你期望的地方。

这在我的ASP.NET 4中不起作用,从搜索它似乎可能与Viewstate有关。 我试图禁用它,但没有运气,登录仍然没有发生。

如果您的html输入都没有NAME,则Request.Form.Keys集合将为空。在你做了一段时间的.NET之后,很容易忘记将它们放在那里。只需命名它们就可以了。

我花了很多年才意识到这一点。 当您在.Net中执行此操作时,asp.net引擎会自动添加名称atttribute。 如果您"手动"创建html表单,很容易忘记它,然后没有任何内容发布,你想知道为什么。

是的,我正在设置Id,但忘了设置名称:S

您确定您的HTML表单是否正确,并且实际上是否进行了HTTP POST?我建议运行Fiddler2,然后尝试通过您的Login.aspx,然后远程HTML站点登录,然后比较发送到服务器的请求。对我来说,ASP.Net总是工作正常 - 如果HTTP请求包含有效的POST,我可以使用Request.Form获取值...

在html表单中,您需要提供额外的viewstate变量并在服务器页面中禁用ViewState。

但这需要对双方进行一些控制。

表单HTML:

注意空__VIEWSTATE。

WebForm.aspx:

CodeBehind="WebForm.aspx.cs" Inherits="WebForm"

EnableEventValidation="False" EnableViewState="false" %>

注意EnableEventValidation="False", EnableViewState="false"以防止空视图状态的验证错误。

Code Behind / Inherits值不准确。

WebForm.cs:

public partial class WebForm : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

string value = Encoding.Unicode.GetString(Convert.FromBase64String(this.postData.Text));

}

}

你确定可以。创建一个HTML页面,其中包含login.aspx页面中的必要组件(即用户名等),并确保它们具有相同的ID。为了你的行动,请确保它是一个帖子。

您可能必须在Page_Load函数的login.aspx页面上执行一些代码来读取表单(在Request.Form对象中)并调用相应的函数来记录用户,但除此之外,您应该有权访问形式,并可以做你想要的。

你确定可以。

了解如何执行此操作的最简单方法是浏览到要发布到的aspx页面。然后将该页面的源保存为HTML。更改新html页面上表单的操作,以指回您最初复制它的aspx页面。

将值标记添加到表单字段并将所需数据放在那里,然后打开页面并单击"提交"按钮。

删除数据发布/发布.aspx页面的runat ="server"部分。

希望这会有所帮助 -

把这个标签放在html和

删除你的login.aspx设计内容..只写页面指令

并且您将在提交按钮单击后获取aspx页面中的值

像这样-

protected void Page_Load(object sender,EventArgs e)

{

if (!IsPostBack)

{

CompleteRegistration();

}

}

public void CompleteRegistration()

{

NameValueCollection nv = Request.Form;

if (nv.Count != 0)

{

string strname = nv["txtbox1"];

string strPwd = nv["txtbox2"];

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值