如何在MVC项目中通过jQuery传递dd/mm/yyyy格式的日期参数
问题原因
你传入JS函数的日期参数没有被引号包裹,JavaScript会把dd/mm/yyyy格式里的/识别为除法运算符,自动执行数值计算,01/12/2021会被解析为1 ÷ 12 ÷ 2021,最终得到你看到的极小数值结果。
解决方案
1. 修改锚标签渲染代码
给函数参数包裹转义单引号,同时显式指定日期输出格式,保证输出符合你需要的dd/mm/yyyy结构:
<a href='javascript:ViewDocDetails(\'@item.UploadDate.ToString("dd/MM/yyyy")\')'>@Html.DisplayFor(modelItem => item.UploadDate)</a>
修改后页面渲染的最终代码会变成如下结构,参数会被识别为字符串不会触发运算:
<a href='javascript:ViewDocDetails("01/12/2021")'>01/12/2021</a>
2. 可选优化(适配AJAX提交)
如果后续要将该日期通过AJAX发送给MVC控制器,建议统一转成yyyy-MM-dd格式避免后端解析出错,JS处理逻辑参考:
function ViewDocDetails(UploadDate) { alert(UploadDate); // 此时已经可以正常输出日期字符串 // 适配后端解析的格式转换逻辑 const [day, month, year] = UploadDate.split('/'); const ajaxDateParam = `${year}-${month}-${day}`; // 后续AJAX发送逻辑 }
内容的提问来源于stack exchange,提问作者Partha
相关产品推荐
相关产品推荐

