public class chanpinController : Controller
    { 
        public ActionResult jiancai(string id, SearchModel search)
        {
            ProductModel model = new ProductModel();
            return View(model);
        }
    }
http://localhost:4254/chanpin/jiancai/ 访问会找不到这个Action
但只要jiancai/随便加个字符就能访问了,这是什么原因造成的呢?

解决方案 »

  1.   

    你看看你的global文件中的路由规则,看看路由规则是不是要求必须有额外参数
      

  2.   

    routes.MapRoute(    
    "Product",    
    "Product/{productId}",   
     new {controller="Product", action="Details"});
    就是这里,你的问题应该在这里面,你看看你的路由是什么样子的,是不是定义了要求有额外参数,而且没有默认值
      

  3.   

    jiancai这个函数带了一个id参数,把这个参数去掉就可以了。还有后面的SearchModel是干嘛的?没用的话都可以去掉的。
      

  4.   


    public static void RegisterRoutes(RouteCollection routes)
            {
                routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
                routes.MapRoute(
                    "default", // Route name
                    "{controller}/{action}/{id}", // URL with parameters
                    new { controller = "Index", action = "Index", id = UrlParameter.Optional } // Parameter defaults
                    , new[] { "KingCMS.Controllers" }
                );
                
            }路由是正确的,我前几天备份的代码就没有这个问题。不知道是什么其它的原因了。。
      

  5.   

    你输入的URL需要带个id参数啊
    所以输入http://localhost:4254/chanpin/jiancai/会调用jiancai()这个Action,但是Controls里面没有,最后404
    然后输入http://localhost:4254/chanpin/jiancai/a会调用jiancai(string id)这个Action,其中id=“a”
    再有那个SearchModel是什么啊  貌似不能放到这里吧
      

  6.   

    如果你说路由没有问题,那你是不是用Html.ActionLink点到那个页面的?
      

  7.   


    public class chanpinController : Controller
        { 
            public ActionResult jiancai(string id="", SearchModel search)
            {
                ProductModel model = new ProductModel();
                return View(model);
            }
        }