Dav*_*huu 2 html c# asp.net webforms
案子
我有两个Web表单,还有一些代码隐藏。第一个网络表单是一个公式编写器,我在其中输入一个字符串。我想使用post方法将该字符串发送到第二个公式,并显示它。
问题
我收到一条错误消息,说无法验证MAC Viewstate:
应用程序“ /”。验证MAC Viewstate。在群集中使用电池和电池的应用程序,可确保配置的有效性,并验证算法的有效性。自动生成群集的新peutpasêtreutiliséedans。
我究竟做错了什么 ?
Webform1.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>
<body>
<form id="form1" runat="server" action="WebForm2.aspx" method="post">
<div>
Enter your first name : <input type="text" name="FirstName"/><br />
<input type="submit" />
</div>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
Webform2.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="WebApplication1.WebForm2" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
First name : <%= FirstName %>
</div>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
Webform2.aspx.cs
public partial class WebForm2 : System.Web.UI.Page
{
public string FirstName { get; private set; }
protected void Page_Load(object sender, EventArgs e)
{
FirstName = Request.Form["FirstName"];
}
}
Run Code Online (Sandbox Code Playgroud)
注意:我对网络技术的经验很少,我正在尝试学习asp.net和html,请原谅。
编辑1:
WebForm3.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm3.aspx.cs" Inherits="WebApplication1.WebForm3" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>
<body>
<form id="form1" runat="server">
<%if (!IsPostBack){ %>
<div>
Enter your first name :
<input type="text" name="FirstName" /><br />
<input type="submit" />
</div>
<% } else { %>
<div>
First name : <%= FirstName %>
</div>
<% } %>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
WebForm3.aspx.cs
public partial class WebForm3 : System.Web.UI.Page
{
public string FirstName { get; private set; }
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
FirstName = Request.Form["FirstName"];
}
}
}
Run Code Online (Sandbox Code Playgroud)
WebForm1.aspx(修订)
<form id="form1" runat="server" method="post">
<div>
Enter your first name : <input type="text" name="FirstName"/><br />
<asp:Button PostBackUrl="~/WebForm2.aspx" Text="Validate" runat="server"/>
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
WebForm3.aspx正常工作,并且使用asp:Button的WebForm1也正常工作,非常感谢。
附加问题:
该测试的目的是寻找以“通用”方式发送数据的其他方式(邮政方式,因为“他们”表示这是最安全的方式)。现在,我只剩下一个问题:使用两个文件(WebForm1和WebForm2方法)或单个文件(WebForm3方法)的最佳实践是什么?换句话说,应该由同一页面负责收集数据并处理它们,还是应该将这些责任分成两个文件?
编辑2,最后一个问题
当使用两个文件时,我看到IsPostBack属性等于false。使用单个文件时,在提交时,我看到IsPostBack属性等于true。使用单个文件时,该属性是否仅更改(因此有用)?
Webform1.aspx
Run Code Online (Sandbox Code Playgroud)<form id="form1" runat="server" action="WebForm2.aspx" method="post">
假设我了解您要完成的工作-如果要覆盖PostBackWebForms 的机制,一种简单的方法是PostBackUrl与Button控件一起使用。
这就是ASP.Net WebForms的工作方式(回发到同一页)。还有其他发布到另一个WebForms Page的方法,但是请尝试第PostBackUrl一种,看看这是否是您真正需要的(阻力最小)。
如果您想使用更多“标准化”的工作方式(例如只是想将POST到您选择的资源)作为我想完成的工作,则也可以研究ASP.Net MVC或WebPages。
嗯...
好吧,您不会喜欢我的回答,因为“取决于情况”-
ASP.net WebForms中的“通用方式”实际上是同一页面-默认的PostBack机制,然后您将像上面一样处理显示-而是通过controls(例如Placeholder或user controls)进行。
您还可以查看类似向导控件的内容->在需要指导用户的情况下很有用Steps-例如,可能是冗长的申请表,并且您希望将其划分为更易于管理的步骤 -以便将其拼凑起来一次Page使用该Postback机制拥有自己的权限,甚至Page可行时甚至使用多个s(跨页发布),这可能是一种自我惩罚的练习:)
还有其他方法,但是我不想混淆和关注话题(例如AJAX)。
我将暂缓“安全性”,因为您需要对此进行更具体的说明-也许值得单独提出一个问题。通常,操作规则是“不信任客户端”(意味着验证任何/所有客户端提供您的应用程序的所有数据),服务器端 -不仅仅是客户端验证(它们应携手工作,而不是相互排斥) 。
嗯...
当使用两个文件时,我看到IsPostBack属性等于false。使用单个文件时,在提交时,我看到IsPostBack属性等于true。使用单个文件时,该属性是否仅更改(因此有用)?
IsPostBack 表示“此POST请求是否来自我自己”?
Button.PostBackUrl-> Page2.aspx = IsPostBack是falseIsPostBack都是true话虽如此,“仅有用”-在此简单示例中。但是您可以使用该检查来做其他事情-您之前提到过安全性,因此可以检查您的页面是否可以/将/应该接受来自任何地方的POST请求。
在您的示例情况下,POST的目标页面(使用2页和时PostBackUrl)应检查/验证其接收的POST数据-因为任何人都可以做您刚做的事情(向它发布POST)。
| 归档时间: |
|
| 查看次数: |
23773 次 |
| 最近记录: |