2015-12-16 7 views
0

У меня есть это в моем routeConfig:MVC RouteConfig проблема пользовательских MapRoute

routes.MapRouteLowercase(

        name: "newProduct", 

        url: "{name}-{thisID}", 


        defaults: new 

        { 

         controller = "newProduct", 

         action = "Index", 

         name = UrlParameter.Optional 


        }, 
        constraints: new { name = new MyProductConstraint() }, 
        namespaces: new string[] { "khanoumiMetro.Controllers" } 

        ); 

и это MyProductConstraint код:

public class MyProductConstraint : IRouteConstraint 
    { 
     private KhanoumiDbContext db = new KhanoumiDbContext(); 


     public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection) 
     { 

      if (values.ContainsKey(parameterName)) 
      { 
       string url = values["name"].ToString(); 


       using (KhanoumiDbContext db = new KhanoumiDbContext()) 
       { 
        db.Database.Connection.Open(); 

        return db.tbl_Product.Any(c => c.url==url); 
       } 

      } 
      return false; 
     } 

    } 

это работает, но если я добавить:

Int id = (int) значения ["thisID"];

и изменить эту строку:

возвращение db.tbl_Product.Any (с => c.url == URL);

To:

возвращение db.tbl_Product.Any (с => c.url == URL-адрес & & c.ID == идентификатор);

Эта ошибка возникает при запуске приложения: Указанный приказ недействителен.

что произошло здесь?!

+0

Каков тип переменной id? – Thomas

+0

@Thomas integer –

+0

c.ID и id имеют одинаковый тип? – Thomas

ответ

1

Я изменил

INT ID = (INT) значения [ "thisID"];

к

INT ID = Convert.ToInt32 (значения [ "thisID"] ToString().);

а также routes.MapRouteLowercase to MapRoute и проблема решена, я думаю, что проблема связана с DLL нижней строкой BaseToolMVC, и я должен сообщить об этом своему разработчику.

Смежные вопросы