Я использую этот код в ASP.NET MVC 2 preview 1:
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);
}
Когда я использую действительный аргумент URL, такой как "/ Comment / List / 22638", я получаю ошибку:
Словарь параметров содержит
неверная запись для параметра
'commentId' для метода
«System.Web.Mvc.ActionResult
Список (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]».
Имя параметра: параметры
Если я изменю объявление на:
public ActionResult List(long id, [DefaultValue(0)] int? commentId)
Код работает нормально. Я что-то не так делаю или проблема в том, что отражение слишком строго по типу для Int32 против Int64? И что я могу сделать, чтобы это исправить? Примените длинную как строку?