Asp.net 无法使用输入字段设置日期时间。始终返回DateTime.MinValue

Asp.net 无法使用输入字段设置日期时间。始终返回DateTime.MinValue,asp.net,.net,asp.net-mvc,asp.net-core,Asp.net,.net,Asp.net Mvc,Asp.net Core,我的程序应该有一个日期过滤器,并给出一篇带有正确日期的文章。但是,当我在DateTime字段中输入任何日期时,我的值不会改变,并且始终是DateTime.MinValue。我不知道为什么,也不知道如何修复它 视图: <form method="get"> <div class="form-inline form-group"> <label class="control-label"> since: </label>

我的程序应该有一个日期过滤器,并给出一篇带有正确日期的文章。但是,当我在DateTime字段中输入任何日期时,我的值不会改变,并且始终是DateTime.MinValue。我不知道为什么,也不知道如何修复它

视图:

    <form method="get">
    <div class="form-inline form-group">
        <label class="control-label"> since: </label>
        @Html.TextBox("startdate", Model.StartDate, htmlAttributes: new { @class = "form-control" })
        <label class="control-label"> till: </label>
        @Html.TextBox("enddate", Model.EndDate, htmlAttributes: new { @class = "form-control" })


        <input type="submit" value="Filtr" class="btn btn-default" />
    </div>
</form>

自:
@TextBox(“startdate”,Model.startdate,htmlAttributes:new{@class=“form control”})
直至:
@TextBox(“enddate”,Model.enddate,htmlAttributes:new{@class=“form control”})
型号:

 public class MainView
{
    public IEnumerable<Article> Articles { get; set; }
    public string Name { get; set; }
    public SelectList Categories { get; set; }
    public DateTime StartDate { get; set; }
    public DateTime EndDate { get; set; }
    public List<int> Tags { get; set; }
}
public类主视图
{
公共IEnumerable项目{get;set;}
公共字符串名称{get;set;}
公共选择列表类别{get;set;}
公共日期时间起始日期{get;set;}
公共日期时间结束日期{get;set;}
公共列表标记{get;set;}
}
和控制器:

 public  IActionResult Index(int? category, string name, DateTime startdateTime, DateTime enddateTime)
      {


        IQueryable<Article> articles = db.Articles.Include(p => p.Category);
           if (category != null && category != 0)
           {
               articles = articles.Where(p => p.CategoryId == category);
           }

           if (!String.IsNullOrEmpty(name))
           {
               articles = articles.Where(p => p.Name.Contains(name));
           }


           //if (startdateTime == null) startdateTime = DateTime.MinValue;
           if (enddateTime ==DateTime.MinValue) enddateTime = DateTime.Now;
            articles = articles.Where(p => p.Date>=startdateTime && p.Date <= enddateTime);               

         List<Category> categories = db.Categories.OrderBy(p=>p.Name).ToList();
           categories.Insert(0, new Category { Name = "All", Id = 0 });

        MainView viewModel = new MainView
        {

            Name = name,
            StartDate = startdateTime,
            EndDate = enddateTime

        };
           return View(viewModel);
      }
public IActionResult索引(int?类别、字符串名称、DateTime startdateTime、DateTime enddateTime)
{
IQueryable articles=db.articles.Include(p=>p.Category);
如果(类别!=null&&category!=0)
{
文章=文章,其中(p=>p.CategoryId==类别);
}
如果(!String.IsNullOrEmpty(名称))
{
articles=articles.Where(p=>p.Name.Contains(Name));
}
//如果(startdateTime==null)startdateTime=DateTime.MinValue;
如果(enddateTime==DateTime.MinValue)enddateTime=DateTime.Now;
articles=articles.Where(p=>p.Date>=startdateTime&&p.Date p.Name).ToList();
插入(0,新类别{Name=“All”,Id=0});
MainView视图模型=新的MainView
{
Name=Name,
StartDate=startdateTime,
EndDate=enddateTime
};
返回视图(viewModel);
}

我认为您的问题是由命名不匹配引起的

在您的视图中,您正在声明一个名为
startdate
的文本框。 在控制器中,您希望它带有名为
startdateTime
的参数

enddate也不匹配

当您匹配这些名称时,参数绑定应该能够将输入值与控制器的DateTime参数匹配

你能试试这个吗