在MVC中定义的路由返回错误的路径

奥斯曼子宫

我有这些网址:

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)
    {
    }
}

但我不发送给IndexAction,发送给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

我怎样才能做到这一点 ?

齐夫·魏斯曼(Ziv Weissman)

至于路由配置文件,您应该声明此路由的默认操作+控制器:

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章