在 .net 3.5 SP1 中设置表单的操作会导致编译时出错
题
我最近安装了.net 3.5 SP1。当我部署一个包含表单及其操作集的已编译网站时:
<form id="theForm" runat="server" action="post.aspx">
我收到这个错误。
未找到方法:'无效System.Web.UI.HtmlControls.HtmlForm.set_Action(System.String)'。
如果未安装 SP1 的开发人员部署已编译的站点,则它可以正常工作。有谁知道有什么解决方案吗?
解决方案
.NET 3.5 SP1尝试使用action=""属性 (.NET 3.5 RTM 没有)。因此,当您部署时,您的代码尝试设置 HtmlForm.Action 属性并失败,因为部署目标上的 System.Web.dll 是 RTM 并且没有该属性的设置器。
其他提示
我不知道具体的解决方案,但 HtmlForm.set_Action() 是编译器创建的一个函数,它充当名为 Action 的属性的设置器。
当你这样做时:
public String Action { set { DoStuff(); } }
这 放 代码实际上变成了一个函数 设置动作.
我知道这不是最好的答案,但我希望它能帮助您找到问题的根源!
我刚刚遇到了同样的问题。据我了解,这确实是由于我的电脑上有.NET 3.5 SP1,而我部署项目的服务器上没有。
据我了解,一种解决方案是将服务器更新为.NET 3.5 SP1。因为我还不想这样做,所以我只是从项目中的所有表单中删除了“action”属性,这解决了问题。
阅读更多
可以使用 方法在这里 设置 form.action 方法:
上面说的都是真的……
事实上,当用户安装 3.5 SP1 时,它会自动使用自己的 SP2 更新 2.0 和 3.0。因此,如果您在应用程序中使用 2.0,则会收到错误消息。
另外.Net2.0上的SP1并没有引起这个问题。
对此还有另一种解决方案。编写一个 javascript,将表单的操作设置为 Page_Load 处的预期 url,并在页面加载时注册脚本。
安装框架 3.5 SP1 即可使用。