ASP.net 在发布时不会填充服务器表单的操作 =""

标签 asp.net webforms

我有一个 ASP.net webforms 站点,在母版页中有一个服务器表单,因为所有页面都需要它。

调试时action参数在运行时与 id 一起填充,但是当使用 IIS7 部署在我的服务器上时,它不会出现......但仍然有效。它不会导致站点问题,但它使我的 W3C HTML5 验证失败,因为它需要填充。

调试源:

<form method="post" action="index.aspx" id="aspnetForm">

直播源:
<form method="post" action="" id="aspnetForm">

母版页中的表单声明:
<form runat="server">
.. some divs
</form>

我知道表单标签没有定义 ID/ Action 等,因为 ASP 在运行时配置默认值,这很好,尽管由于某种原因它在我的服务器上搞砸了。我试过使用 action="<% Path etc %>" , 获取路径名,但它不起作用。

我究竟做错了什么?我是否遗漏了什么,或者在母版页中使用表单只是不好的做法?

谢谢。

更新

好的,为了解决答案中指出的问题,我只是在 Masterpage Page_Load 上设置了 Form.Action,终于得到了 W3C 的绿灯!

备注 :我正在使用 Intelligencia Rewriter,但您可以使用 Request.Url 拉取 URL
public partial class myMasterPage : System.Web.UI.MasterPage
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Form.Action = Intelligencia.UrlRewriter.RewriterHttpModule.RawUrl;
    }
}

最佳答案

ASP.NET 4.0?如果是这样,这是您的答案:http://www.asp.net/whitepapers/aspnet4/breaking-changes#0.1__Toc256770154 ;这不容易阅读,我自己也不熟悉,所以你应该阅读它,看看它如何影响你的网站。

关于ASP.net 在发布时不会填充服务器表单的操作 ="",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9131966/

相关文章:

asp.net - Web.config 文件中appSettings 和connectionStrings 之间的区别?

asp.net - 如何在运行时添加数据时隐藏gridview的一列?

c# - gridView 中的复选框

asp.net - 如何从网页 (asp.net) 启动 EXE

c# - 动态表 : Link button to textbox cell by cell

c# - StackExchange.Redis 与 Azure Redis 速度慢得无法使用或引发超时错误

javascript - Page_ClientValidate 未定义

asp.net - 在 .NET 4.7.2 下使用 VB.NET 在 WebForms 中进行构造函数注入(inject)

jquery - 如何在 VS.NET 2012 中的 ASP.NET Web 表单中使用 jQuery 文件?

c# - nopCommerce https ssl