参数保留在输入 Razor C# 上

Parameter stay on Input Razor C#

我的视图如下:

<form method="post" asp-action="Index">
   <input id="sStartDate" name="sStartDate" /><br>
   <input id="sFinishDate" name="sFinishDate" /><br>
   <input type="submit" class="btn btn-sm btn-primary btn-block" value="Generate" />

   <table>
      <!-- somedatahere... -->
   </table>
</form>

然后我有一个这样的控制器:

public IActionResult Index(DateTime sStartDate, DateTime sFinishDate)
{
     var model = _db.Activities.Where(w => w.StartDate >= sStartDate && w.StartDate <= sFinishDate).ToList();
     return View(model);
}

我的问题:

  1. 如何将 sStartDatesFinishDate 输入设置为今天的默认日期?
  2. 当我点击Generate时,输入值应该保持为用户选择。我该怎么做?

现在,当我点击 sStartDatesFinishDate,然后点击 Generate。输入设置为空。

需要建议。
谢谢。

您可以使用 TempData 来保存日期:

View(ToShortDateString()用来显示日期不显示时间,如果要显示时间,去掉这个方法即可):

@{
    var sStartDate = TempData["sStartDate"] == null ? DateTime.Now.ToShortDateString() : TempData["sStartDate"];
    var sFinishDate = TempData["sFinishDate"] == null ? DateTime.Now.ToShortDateString() : TempData["sFinishDate"];
}
<form method="post" asp-action="Index">
    <input id="sStartDate" name="sStartDate" value="@sStartDate" /><br>
    <input id="sFinishDate" name="sFinishDate" value="@sFinishDate"/><br>
    <input type="submit" class="btn btn-sm btn-primary btn-block" value="Generate" />
</form>

控制器:

[HttpPost]
public IActionResult Index(DateTime sStartDate, DateTime sFinishDate)
{
    TempData["sStartDate"] = sStartDate.ToShortDateString();
    TempData["sFinishDate"] = sFinishDate.ToShortDateString();
    return View();
}