ルーティングを考え出したと思ったら、思うように動作しません。ASP.Net MVC 4 RC を使用しています。ここに私のRouteConfigがあります:
routes.MapRoute
(
"TwoIntegers",
"{controller}/{action}/{id1}/{id2}",
new { controller = "Gallery", action = "Index", id1 = new Int32Constraint(), id2 = new Int32Constraint() }
);
routes.MapRoute
(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
これが私のルート制約です:
public class Int32Constraint : IRouteConstraint
{
public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
{
if (values.ContainsKey(parameterName))
{
int intValue;
return int.TryParse(values[parameterName].ToString(), out intValue) && (intValue != int.MinValue) && (intValue != int.MaxValue);
}
return false;
}
}
/{domain.com}/PageSection/Edit/21
「TwoIntegers」ルートで停止しています。2 番目の整数が渡されていないことは明らかです。
これが私のエラーです:
パラメーター ディクショナリには、'SolutiaConsulting.Web.ContentManager.Controllers.PageSectionController' のメソッド 'System.Web.Mvc.ActionResult Edit(Int32)' の null 非許容型 'System.Int32' のパラメーター 'id' の null エントリが含まれています。オプションのパラメーターは、参照型または null 許容型であるか、オプションのパラメーターとして宣言する必要があります。パラメータ名: パラメータ
私は何を間違っていますか?より具体的なルートが最初にリストされています。助けてください。