在.net 3.5 SP1中设置表单的操作会在编译时导致错误

时间:2020-03-05 18:45:05  来源:igfitidea点击:

我最近安装了.net 3.5 SP1. 当我部署包含网站及其操作集的已编译网站时:

<form id="theForm" runat="server" action="post.aspx">

我收到此错误。
找不到方法:"无效System.Web.UI.HtmlControls.HtmlForm.set_Action(System.String)"。
如果尚未安装SP1的其他开发人员部署了已编译的站点,则可以正常工作。有谁知道解决方案吗?

解决方案

回答

我不知道具体的解决方案,但是HtmlForm.set_Action()是编译器创建的函数,它充当名为Action的属性的设置器。

当我们这样做时:

public String Action { set { DoStuff(); } }

设置代码实际上变成了一个名为set_Action的函数。

我知道这不是最佳答案,但我希望它能找到问题的根源!

回答

.NET 3.5 SP1尝试使用action =""属性(.NET 3.5 RTM没有)。因此,在部署时,代码正在尝试设置HtmlForm.Action属性,但失败,因为部署目标上的System.Web.dll是RTM,并且该属性上没有二传手。

回答

我只是遇到了同样的问题。
据我了解,这确实是由于我的PC上装有.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,并在页面加载时注册脚本。

谢谢,
http://www.dilrukshidevapriya.blogspot.com

回答

Basta安装框架3.5 SP1的功能。