如何通过HTML表单向Controller提交日期?现有代码无法运行
解决HTML表单向ASP.NET Controller提交日期失败的问题
我来帮你捋捋这个问题,你的表单提交日期没成功,大概率是这几个点没处理好,咱们一步步修复:
核心问题:Input的Name属性不规范
你给日期输入框用了带空格的法语名称Choisir une date,ASP.NET的模型绑定系统很难识别这种带空格和特殊字符的参数名,这是最主要的原因。建议改成简洁的英文名称,比如selectedDate,这样Controller那边能轻松匹配到参数。修改后的表单代码
把input的name属性替换成规范的名称,完整表单如下:<form action="/Home/Index" method="get"> <input type="date" name="selectedDate"><br> <input type="submit" value="Submit"> <input type="reset"> </form>Controller端的参数接收
确保你的Action参数名和input的name完全一致,比如这样写:public IActionResult Index(DateTime selectedDate) { // 这里就可以拿到用户选择的日期了,比如做后续处理 return View(); }如果你用ViewModel接收数据,ViewModel的属性名也要对应:
public class DateInputModel { public DateTime SelectedDate { get; set; } } // 对应Action public IActionResult Index(DateInputModel model) { var chosenDate = model.SelectedDate; // 处理逻辑 return View(); }额外小提示
提交后可以看看URL,正常情况下会拼上参数,比如/Home/Index?selectedDate=2024-05-20,如果URL里有这个参数但Controller没拿到,那肯定是参数名不匹配;如果URL里没有,检查表单的action路径是否正确,或者input的name有没有写错。
另外,input type="date" 默认提交的是ISO标准格式(yyyy-MM-dd),ASP.NET默认支持这个格式,一般不需要额外配置日期解析规则。
内容的提问来源于stack exchange,提问作者M.LOOK
相关产品推荐
相关产品推荐

