229 messaggi dal 17 aprile 2006
Salve,
ho iniziato con MVc6, ho creato una semplice chiamata ad un controller per vedere come funz i nuovi tag, ma al controller il parametro arriva sempre null, qualcuno a suggerimenti?

//Controller
namespace testParametri.Controllers

{

public class HomeController : Controller

{
//id is always null
public IActionResult Index(string id)

{

return View();

}

}

}

//from View

<form asp-controller="Home" asp-action="Index">

<input type="search" id="ida"/>

<input type="submit"/>

</form>

Vincenzo Pesante
Software Engineer
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Vincenzo,

il parametro arriva sempre null,

sì, questo capita perché il model binder non riesce a capire da dove prendere il valore per il tuo parametro "id", perché non viene passato né nell'URL, né in querystring, né tra i dati del form.

Infatti quando il tuo form viene inviato, il browser effettuerà una richiesta alla home ma il valore del campo di tipo "search" non verrà passato perché è privo dell'attributo name.
Questo è un comportamento normale dei form HTML, mentre ASP.NET MVC o i tag helpers in questo caso non sono i responsabili del problema.

Per il momento, prova semplicemente ad aggiungere un attributo name al campo di tipo "search", come segue:
<form asp-controller="Home" asp-action="Index">
  <input type="search" id="ida" name="id" />
  <input type="submit"/>
</form>

Il name del campo deve corrispondere al nome del tuo parametro, quindi in questo caso ho scritto "id".

Inoltre, ricorda che "id" è già un nome usato per uno dei token della route di default e quindi il tuo parametro verrebbe popolato anche se inviassi una richiesta GET ad /Home/Index/aabbcc.
Per evitare confusione, scegli un altro nome per il parametro della tua action (e quindi anche per il campo search) se non rappresenta un id ma un testo di ricerca.

ciao,
Moreno
Modificato da BrightSoul il 13 marzo 2016 22.50 -

Enjoy learning and just keep making

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.