Dans mon contrôleur dans une application Asp.net MVC 1, je veux utiliser UpdateModel pour remplir une variable avec des données POST dans mon contrôleur. J'ai regardé des dizaines d'exemples mais même les plus basiques semblent échouer silencieusement pour moi.Problème de base avec Asp.net MVC UpdateModel (myClass)
Voici un exemple très basique qui ne fonctionne tout simplement pas. Qu'est-ce que je fais de mal?
public class TestInfo
{
public string username;
public string email;
}
public class AdminController : Controller
{
public ActionResult TestSubmit()
{
var test = new TestInfo();
UpdateModel(test);//all the properties are still null after this executes
//TryUpdateModel(test); //this returns true but fields/properties all null
return Json(test);
}
}
//Form Code that generates the POST data
<form action="/Admin/TestSubmit" method="post">
<div>
<fieldset>
<legend>Account Information</legend>
<p>
<label for="username">Username:</label>
<input id="username" name="username" type="text" value="" />
</p>
<p>
<label for="email">Email:</label>
<input id="email" name="email" type="text" value="" />
</p>
<p>
<input type="submit" value="Login" />
</p>
</fieldset>
</div>
</form>
Merci pour les réponses rapides les gars. J'aime revenir de déjeuner et voir 4 réponses. Je les teste maintenant. Note de côté rapide. Je me base sur l'exemple ci-dessus à la page 374 de Pro Asp.net MVC Framework par Steve Sanderson, et il n'utilise pas l'en-tête [AcceptVerbs (HttpVerbs.Post)] ou un paramètre typé. Le livre est-il incorrect? – Glenn
Compris. Le livre est correct. Il néglige simplement de mentionner que dans ce cas, les méthodes de réflexion utilisées par UpdateModel ne fonctionnent que pour les propriétés même si elles fonctionnent pour des champs qu'il ne possède pas actuellement. On dirait un bug MVC pour moi. Les propriétés sont généralement meilleures, mais pour un modèle de vue simple, il est plus facile de définir les valeurs par défaut des champs au lieu de retaper toutes les valeurs de propriété et de définir les valeurs par défaut dans le constructeur de classe. – Glenn