如何让Datepicker保留选中日期值?ASP.NET Core Razor页面实现咨询
解决ASP.NET Core Razor页面Datepicker提交后保留选中日期的问题
1. 修正视图层(.cshtml)的输入框绑定
原代码中input的value是固定字符串,未与模型属性关联,导致回发后无法保留选中值。改用asp-for标签助手绑定模型的Date属性,Razor会自动处理日期格式和回发后的赋值:
@model YourPageModel <form method="post" asp-page-handler="TestClick"> <br /> <br /> <input type="date" data-val="true" data-val-required="The Date field is required." asp-for="Date" /> <button>Search</button> <br /> </form>
注:模型中的
Date属性已标记[BindProperty, DataType(DataType.Date)],无需手动写id、name和value属性,asp-for会自动生成并填充正确值。
2. 修正后台逻辑(.cshtml.cs)的日期获取
利用[BindProperty]的自动绑定特性,直接使用模型的Date属性,无需从Request.Form手动取值,同时确保回发后属性值保留:
public class YourPageModel : PageModel { [BindProperty, DataType(DataType.Date)] public DateTime Date { get; set; } // 若允许日期为空,可改为可空类型:public DateTime? Date { get; set; } public void OnPostTestClick() { string testDate = Date.ToString("yyyy-MM-dd"); Debug.WriteLine("Testclick verdi2 = " + testDate); filterdato = testDate; ListData(); } // 你的ListData方法... }
3. 关键说明
asp-for="Date"会自动将模型的Date值格式化为HTML5 date输入框要求的yyyy-MM-dd格式,回发后页面重新渲染时,会用模型当前的Date值填充输入框,实现保留选中日期的效果。- 若使用可空
DateTime?类型,Razor会自动处理空值情况,生成空的value属性以显示输入框占位符。
内容的提问来源于stack exchange,提问作者Atrageous
相关产品推荐
相关产品推荐

