2016-09-09 2 views
0

Я работаю с MVC и пытаюсь передать дату через мой URL. Я хотел бы, чтобы метод был по умолчанию для сегодняшней даты, если в URL не указана дата.Не знаю, почему моя переменная перегружается

public ActionResult Date(string date) 
    { 
     DateTime searchDate = DateTime.Now.Date; 
     bool success = false; 

     if(date != null) 
     { 
      success = DateTime.TryParseExact(date, "MM-dd-yyyy", System.Globalization.CultureInfo.CurrentCulture, 
         System.Globalization.DateTimeStyles.AllowWhiteSpaces, out searchDate); 
     } 

     List<Article> articles = new List<Article>(); 

     foreach (Article a in db.Articles) 
     { 
      if (a.PostedDateTSU.Value.Day == searchDate.Day && a.PostedDateTSU.Value.Month == searchDate.Month && 
       a.PostedDateTSU.Value.Year == searchDate.Year) 
      { 
       articles.Add(a); 
      } 
     } 
     return View(articles); 
    } 

Моя проблема когда я ввожу URL: «http://localhost:52159/Articles/Date/09-08-2016» метод еще недобросовестный к сегодняшней дате. Не знаю, где это происходит. Я чувствую, что это связано с TryParseExact().

Заранее благодарен!

+0

Что значение„успеха“после этого Налейте немного точку отладки или сообщение – WBT

+2

Если его дата, почему вы используете 'string' вместо' DateTime'? –

+0

@StephenMuecke Я не думаю, что могу передать жизнеспособный формат DateTime через URL без дополнительных синтаксический анализ. Могу ли я? –

ответ

1

Вы должны направлять свой параметр или доступ к действию, как этот http://localhost:52159/Articles/Date?date=09-08-2016 "

примера в RouteConfig:

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapRoute(
      name: "DateRoute", 
      url: "{controller}/{action}/{date}", 
      defaults: new { controller = "YourController", action = "Date", date = UrlParameter.Optional } 
     ); 

     routes.MapRoute(
       name: "Default", 
       url: "{controller}/{action}/{id}", 
       defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
      ); 

    } 
+0

Это не сработает (теперь все будет соответствовать DateRoute, и маршрут по умолчанию никогда не будет удален). DateRoute должен быть 'url:" Articles/Date/{date} ",' and 'defaults: new {controller =" Articles ", action =" Date "}' –

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