我有这些网址:
http://localhost:7708/Product/Search/89737497
http://localhost:7708/Product/Search
为此我在Action和Controller中设置了Route
属性,如下所示:
[RoutePrefix("Product")]
public partial class ProductController : BaseController
{
[Route("Search/{categoryCode}")]
public virtual async Task<ActionResult> Index(int? categoryCode)
{
}
}
但我不发送给Index
行动,发送给GetProductDetail(code)
并返回:
参数字典包含非可空类型'System.Int32'的参数'code'的空条目,用于方法'System.Web.Mvc.ActionResult GetProductDetail(Int32)'
我在routeConfig
类中定义了这个,但它不起作用:
routes.MapRoute(
name: "Search",
url: "Product/Search/{categoryCode}",
defaults: new { categoryCode = UrlParameter.Optional }
);
我在浏览器的地址栏中输入了这些网址,并返回该错误。
我有这个来生成网址:
<a href="@Url.Action(MVC.Product.Index(child.Code.ToUrlEncription()))">@child.Name </a>
以上代码生成此网址:
localhost:7708/Product?categoryCode=121212
我该怎么做?
答案 0 :(得分:1)
对于路线配置文件,您应声明此路线的默认操作+控制器:
routes.MapRoute(
name: "Search",
url: "Product/Search/{categoryCode}",
defaults: controller = "Product", action = "Index", categoryCode = UrlParameter.Optional
);
对于自定义路线,您应该确保您的路线配置具有以下代码:
public static void RegisterRoutes(RouteCollection routes) {
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
//This will map routes from Route attribute.
routes.MapMvcAttributeRoutes();
// ...
}