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

时间:2008-08-29 17:11:40

标签: asp.net .net-3.5

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

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

我收到了这个错误 找不到方法:'Void System.Web.UI.HtmlControls.HtmlForm.set_Action(System.String)'。
如果未安装SP1的开发人员部署已编译的站点,则可以正常工作。有谁知道这方面的任何解决方案?

7 个答案:

答案 0 :(得分:6)

.NET 3.5 SP1 tries to use the action="" attribute(.NET 3.5 RTM没有)。因此,在部署时,您的代码正在尝试设置HtmlForm.Action属性并失败,因为部署目标上的System.Web.dll是RTM且该属性上没有setter。

答案 1 :(得分:1)

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

当你这样做时:

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

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

我知道这不是最好的答案,但我希望它可以帮助您找到问题的根源!

答案 2 :(得分:0)

我遇到了同样的问题。 根据我的理解,这确实是因为我的PC上有.NET 3.5 SP1,而我部署项目的服务器没有。
据我所知,一个解决方案是使用.NET 3.5 SP1更新服务器。由于我不想这样做,我只是从项目中的所有表单中删除了“action”属性,这解决了问题。
Read more

答案 3 :(得分:0)

可以使用method here设置form.action方法:

答案 4 :(得分:0)

上面提到的都是真的......

事实上,当一个安装3.5 SP1时,它会自动使用自己的SP2更新2.0和3.0。 因此,如果您使用2.0作为应用程序,则会收到错误。

此外,.Net2.0上的SP1没有引起问题。

答案 5 :(得分:0)

还有另一个解决方案。 编写一个javascript,将表单的操作设置为Page_Load中的预期URL,并在页面加载时注册脚本。

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

答案 6 :(得分:0)

Basta instalar o framework 3.5 SP1 que funciona。