我最近安装了.net 3.5 SP1。当我部署包含表单及其操作集的已编译网站时:
<form id="theForm" runat="server" action="post.aspx">
我收到了这个错误
找不到方法:'Void System.Web.UI.HtmlControls.HtmlForm.set_Action(System.String)'。
如果未安装SP1的开发人员部署已编译的站点,则可以正常工作。有谁知道这方面的任何解决方案?
答案 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,并在页面加载时注册脚本。
答案 6 :(得分:0)
Basta instalar o framework 3.5 SP1 que funciona。