2016-09-09 8 views
0

私はMVCで働いていて、私のURLから日付を渡そうとしています。 URLに日付が指定されていない場合は、このメソッドを今日の日付にデフォルト設定することをお勧めします。 「http://localhost:52159/Articles/Date/09-08-2016」方法はまだ今日の日付をデフォルトされています。私は、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); 
    } 

私の問題はあります。どこが間違っているのか分かりません。私はそれがTryParseExact()と関係があると感じています。

ありがとうございます!

+0

少しデバッグポイントやメッセージを入れてそこではそれも(TryParseExactに到達しないかどうかを確認し)。 – WBT

+2

なぜあなたは代わりに '' DateTime'? –

+0

@StephenMueckeのSTRING'を使用しているその日、もし私が追加することなく、URLを介して実行可能なDateTime書式を渡すことができないと思います私はできますか? –

答えて

1

あなたはRouteConfigでこのhttp://localhost:52159/Articles/Date?date=09-08-2016 "

例のようなアクションにルーティングするために、あなたのパラメータまたはアクセスする必要があります:?この後の『成功』の値が何

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と一致し、Defaultルートは決してヒットしません)。 DateRouteは 'url:"記事/日付/ {date} "、' defaults:new {controller = "記事"、アクション= "日付"} ' –

関連する問題