J'utilise ce code dans ASP.NET MVC 2 Aperçu 1:S'agit-il d'un bogue ASP.NET MVC 2 Preview 1, et quel est le problème?
public ActionResult List(long id, [DefaultValue(0)] long? commentId)
{
var model = UserComment.ForRefId(id);
PageTitle = string.Format("Comments for '{0}'",
SetCommentThread(id).Subject);
ViewData[MvcApplication.SAnchor] = commentId;
return View("List", model);
}
Lorsque j'utilise un argument URL valide tel que "/ Commentaire/Liste/22638", je reçois l'erreur:
The parameters dictionary contains an invalid entry for parameter 'commentId' for method 'System.Web.Mvc.ActionResult List(Int64, System.Nullable
1[System.Int64])' in 'ThreadsMVC.Controllers.CommentController'. The dictionary contains a value of type 'System.Int32', but the parameter requires a value of type 'System.Nullable
1[System.Int64]'. Parameter name: parameters
Si je change la déclaration:
public ActionResult List(long id, [DefaultValue(0)] int? commentId)
le code fonctionne très bien. Est-ce quelque chose que je fais mal, ou un problème avec la réflexion étant trop de type strict pour Int32 vs Int64? Et que puis-je faire pour le réparer? Cast le long comme une ficelle?
Cela fonctionne pour moi dans MVC1. Pouvez-vous reproduire l'erreur dans MVC1? –
N'a pas encore essayé MVC 1 .. comme il s'agit d'un nouveau projet, je suis "regarder en avant" et profiter du nouveau support de template tellement je ne veux pas revenir à MVC 1. C'est la version qui fait MVC plus convaincant pour moi :) –
Je n'ai pas testé cela dans MVC 1, je veux dire. –