C# 为什么可以';我不能用服务器表单进行跨页发布吗?
我有一个最小的网站(基于VisualStudio模板) 我正试图使用表单的C# 为什么可以';我不能用服务器表单进行跨页发布吗?,c#,asp.net,forms,C#,Asp.net,Forms,我有一个最小的网站(基于VisualStudio模板) 我正试图使用表单的action属性将服务器端表单发布到另一个aspx页面。我一直收到臭名昭著的无效回发或回调参数异常 如果我在我的按钮中使用PostBackUrl属性,我可以让它工作,但是为什么我不能使用action属性将表单提交到其他页面?我不想禁用我的事件验证 下面是我的网站。母版默认值。aspx和联系人。aspx完全为空(使用母版页除外)。所有页面都没有代码隐藏 <%@ Master Language="C#" AutoEven
action
属性将服务器端表单发布到另一个aspx页面。我一直收到臭名昭著的无效回发或回调参数
异常
如果我在我的按钮中使用
PostBackUrl
属性,我可以让它工作,但是为什么我不能使用action
属性将表单提交到其他页面?我不想禁用我的事件验证
下面是我的网站。母版默认值。aspx
和联系人。aspx
完全为空(使用母版页除外)。所有页面都没有代码隐藏
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="LauriTest.SiteMaster" %>
<!DOCTYPE html>
<html lang="en">
<head runat="server">
<title>hello</title>
</head>
<body>
<form id="form1" runat="server" action="Contact.aspx">
<asp:TextBox runat="server"/>
<asp:Button runat="server" />
</form>
</body>
</html>
你好
尝试添加到您的aspx页面(第一行
)
第二件事是记住输入页面加载方法
if (!Page.IsPostBack){//doOperation}
更新
尝试为事件验证注册控件
protected override void Render(HtmlTextWriter writer)
{
ClientScript.RegisterForEventValidation(YourButtonThatCausesSubmit.UniqueID.ToString());
base.Render(writer);
}
原因
事件验证检查事件的起源是否来自先前加载的一个渲染控件(而不是一些已确认的控件)。在渲染阶段,可以使用_doPostBack在回发期间验证事件。在您的情况下,有东西破坏了此验证,服务器认为回发来自外部对象,可能是某个字符,请在提交表单之前尝试最后一次尝试(repace
)
var ok= OriginalString.replace("<","<");
ok= ok.replace(">",">");
return ok;
var ok=OriginalString.replace(“,”);
返回ok;
更新2
我从你的代码中看到了母版页代码。您正在插入表单元素。
从母版页继承的页面可能有另一种形式。如果是,这就是错误的原因(不止一个表单)。我不想禁用我的事件验证。对不起,原来的问题忘了包括在内。正如我所说,我没有任何代码在代码后面,没有,没有帮助<代码>Page.ClientScript.RegisterForEventValidation(test.UniqueID)代码>。另外,我的问题主要是关于“为什么”-如果需要,我可以使用
PostBackUrl
。最后一次尝试,请告诉我谢谢,但我没有发布任何字符串。我甚至不需要在文本框中输入任何内容,我只是将其留空,然后我得到了错误。我已经做了另一个更新,如果它解决了您的问题,请告诉我我试图复制您的场景。当我试图提交到Contact.aspx时,我收到了“验证MAC失败”。我不确定这和你犯的是同一个错误。我所做的所有工作(跨页面发布)都是禁用Contact.aspx页面的MAC-Validation-at-page指令。EnableViewStateMac=“false”不,我没有收到MAC验证错误。我真的从VisualStudio2013模板开始了一个新的asp.net项目,删除了所有的废话,我就这么做了。我甚至重新启动了我的电脑,试图修复这个奇怪的问题,但没有任何帮助。这在某种程度上与母版页设置有关,因为如果没有涉及母版页,我不会得到错误。