237 messaggi dal 02 novembre 2010
Ciao a tutti,
ho sviluppato un'applicazione MVC.

Ho una view nella quale ho inserito un form, che fanno riferimento ad un determinato controller che è diverso dal default. Il controller è denominato SemilavoratiController ed al suo interno ho creato la relativa action [HttpPost].

La questione è che pur impostando il form come POST, viene effettuato comunque il GET; sono abbastanza convinto che il problema sia riconducibile in qualche modo al ROUTING, tant'è che se lo stesso form (identico!) lo sposto sul controller e view di default e Home (action index) il post funziona.

Non riesco a capire se devo modificare il RouteConfig.cs in questo caso.
944 messaggi dal 11 febbraio 2013
Come hai verificato che sia GET?
Puoi postare del codice semplificato del form e del controller?
237 messaggi dal 02 novembre 2010
jjchuck ha scritto:
Come hai verificato che sia GET?


Ho messo il breakpoint sulla action, inoltre sulla barra degli indirizzi lo valorizza come GET


Puoi postare del codice semplificato del form e del controller?


questo sarebbe il form
    <form asp-controller="Semilavorati" asp-action="CruscottoSemilavoratiEsterni" method="post">

        <input id="datainizio" name="datainizio" type="text" value="01/01/@DateTime.Now.Year" style="width:250px" />
        <input id="datafine" name="datafine" type="text" value="31/12/@DateTime.Now.Year" style="width:250px" />

        <button type="submit" class="Btn BtnBlue">Visualizza</button>
    </form>


e questo invece il controller

[HttpPost]
        public ActionResult CruscottoSemilavoratiEstern(String datainizio, String Datafine)
        {
            return View();
        }






Questo invece è il mio RoutConfig.cs, in sostanza l'ho lasciato tale e quale
public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
        }

Modificato da GANDULE il 11 giugno 2020 07:50 -
256 messaggi dal 30 novembre 2004
In primis ti consiglierei di usare i viewModel come oggetto che si passa al metodo poi prova con:

//
// Riepilogo:
// Scrive un tag <form> di apertura nella risposta e imposta il tag dell'azione
// sul controller, sull'azione e sui valori della route specificati.Il form usa
// il metodo HTTP specificato e include gli attributi HTML.
//
// Parametri:
// htmlHelper:
// Istanza dell'helper HTML estesa da questo metodo.
//
// actionName:
// Nome del metodo di azione.
//
// controllerName:
// Nome del controller.
//
// routeValues:
// Oggetto contenente i parametri per una route.I parametri vengono recuperati tramite
// reflection esaminando le proprietà dell'oggetto.Questo oggetto viene creato,
// in genere, usando la sintassi dell'inizializzatore di oggetto.
//
// method:
// Metodo HTTP per l'elaborazione del form, ovvero GET o POST.
//
// htmlAttributes:
// Oggetto che contiene gli attributi HTML da impostare per l'elemento.
//
// Valori restituiti:
// Tag <form> di apertura.
public static MvcForm BeginForm(this HtmlHelper htmlHelper, string actionName, string controllerName, object routeValues, FormMethod method, object htmlAttributes);
237 messaggi dal 02 novembre 2010
Ciao Mexico77, non credi sia un problema di routing?
Lo stesso identico form messo sul controller Home di default funziona perfettamente.
237 messaggi dal 02 novembre 2010
Ho risolto.
Il problema era dovuto ad un refuso.
Si tratta di una vecchia applicazione realizzata con le webforms e che sto migrando in MVC.

All'interno dell'html della view, in cima era rimasto il tag form della webforms, per cui il tag non veniva proprio renderizzato.

Mi ha fatto dannare, comunque risolto

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.