我有一个自定义 404 页面,我遇到了一个问题,即 404 映射会破坏该页面上的表单。
我已将我的网站配置为在未找到的每个页面上执行并返回我的自定义 404 页面:
<httpErrors existingResponse="Auto">
<remove statusCode="500" subStatusCode="-1" />
<remove statusCode="404" subStatusCode="17" />
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/404.aspx" responseMode="ExecuteURL" />
<error statusCode="404" subStatusCode="17" path="/404.aspx" responseMode="ExecuteURL" />
<error statusCode="500" path="/500.aspx" responseMode="ExecuteURL" />
</httpErrors>
我的母版页包含一个包含所有内容的表单:
<form runat="server">
如果我去 /xyz (即不是一个真实的页面),表单动作被指定为指向那个不存在的页面:
<form method="post" action="xyz?404%3bhttp%3a%2f%2fsite.example.com%3a80%2fsite%2fxyz" id="ctl01">
因此,如果我在该页面上提交回发(例如按钮 onclick),则回发会被 POST 到 /xyz - 当然,这不是实际页面,因此在表单处理发生之前我们会被重定向到 404 . 因此,onclick 永远不会被调用。
我猜我需要以某种方式强制表单操作指向实际页面(/404.aspx)而不是丢失的页面(/xyz)——但我该怎么做呢?