不知道为什么我的变量是覆盖

本文关键字:覆盖 变量 我的 为什么 不知道 | 更新日期: 2023-09-27 18:06:36

我正在与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()有关。

提前感谢!

不知道为什么我的变量是覆盖

您需要将您的参数或访问路由到这样的操作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 }
            );
    }