L'impostazione dell'azione di un modulo in .net 3.5 SP1 provoca errori durante la compilazione
Domanda
Recentemente ho installato .net 3.5 SP1.Quando ho distribuito un sito Web compilato che conteneva un modulo con il suo set di azioni:
<form id="theForm" runat="server" action="post.aspx">
Ho ricevuto questo errore.
Metodo non trovato:'Vuoto System.Web.UI.HtmlControls.HtmlForm.set_Action(System.String)'.
Se un collega sviluppatore che non ha installato SP1 distribuisce il sito compilato, funziona correttamente.Qualcuno conosce qualche soluzione per questo?
Soluzione
.NET 3.5 SP1 tenta di utilizzare l'attributo action="". (.NET 3.5 RTM no).Pertanto, quando esegui la distribuzione, il tuo codice tenta di impostare la proprietà HtmlForm.Action e non riesce, poiché System.Web.dll sulla destinazione di distribuzione è RTM e non dispone di un setter nella proprietà.
Altri suggerimenti
Non conosco la soluzione specifica, ma HtmlForm.set_Action() è una funzione creata dal compilatore che funge da setter per una proprietà chiamata Action.
Quando lo fai:
public String Action { set { DoStuff(); } }
IL impostato il codice diventa effettivamente una funzione chiamata set_Azione.
So che non è la risposta migliore, ma spero che ti aiuti a trovare la fonte dei tuoi problemi!
Ho appena riscontrato lo stesso problema.Da quello che ho capito, è effettivamente causato dal fatto che il mio PC ha .NET 3.5 SP1 e il server su cui ho distribuito il progetto no.
Da quanto ho capito, una soluzione è che il server venga aggiornato con .NET 3.5 SP1.Dato che non voglio ancora farlo, ho appena rimosso l'attributo "azione" da tutti i moduli del progetto e questo ha risolto il problema.
Per saperne di più
Potrebbe usare il metodo qui per impostare il metodo form.action:
Tutto quanto detto sopra è vero...
Infatti quando si installa 3.5 SP1, si aggiorna automaticamente 2.0 e 3.0 con il proprio SP2.Quindi, se stai utilizzando 2.0 per un'applicazione, riceverai l'errore.
Inoltre, SP1 su .Net2.0 non ha causato il problema.
C'è un'altra soluzione a questo.Scrivi un javascript che imposti l'azione del modulo sull'URL previsto in Page_Load e registri lo script al caricamento della pagina.
Basta installare il framework 3.5 SP1 che funziona.