我有这些网址:
http://localhost:7708/Product/Search/89737497
http://localhost:7708/Product/Search
为此,我Route
在Action和Controller中设置Attribute,如下所示:
[RoutePrefix("Product")]
public partial class ProductController : BaseController
{
[Route("Search/{categoryCode}")]
public virtual async Task<ActionResult> Index(int? categoryCode)
{
}
}
但我不发送给Index
Action,发送给GetProductDetail(code)
并返回:
参数字典包含用于方法'System.Web.Mvc.ActionResult GetProductDetail(Int32)'的非空类型'System.Int32'的参数'code'的空条目。
并且我在routeConfig
课堂上定义了this,但是它不起作用:
routes.MapRoute(
name: "Search",
url: "Product/Search/{categoryCode}",
defaults: new { categoryCode = UrlParameter.Optional }
);
我在浏览器的地址栏中输入了这些url,它返回了该错误。
我有这个来生成url:
<a href="@Url.Action(MVC.Product.Index(child.Code.ToUrlEncription()))">@child.Name </a>
上面的代码生成此url:
localhost:7708/Product?categoryCode=121212
我怎样才能做到这一点 ?
至于路由配置文件,您应该声明此路由的默认操作+控制器:
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();
// ...
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句