从 cshtml 页面向控制器发送日期值
Send date values to controller from cshtml page
我正在使用 .NetCore 和 Entity Framework 设计网站。
在网站上,我有一个显示 table 数据的 cshtml 页面,如下所示:
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.CharacterId)
</td>
<td>
@Html.DisplayFor(modelItem => item.CharacterDisplayName)
</td>
<td>
@Html.DisplayFor(modelItem => item.TimePathYear)
</td>
<td>
<a asp-action="Edit" asp-route-id="@item.CharacterId">Edit</a> |
</td>
</tr>
}
其中,当用户点击 "Edit" link 时,它会将它们发送到此控制器:
public async Task<IActionResult> Edit(int? id) { }
但是,我现在想传递一个用户 select 可用的日期范围,这样控制器看起来像这样:
public async Task<IActionResult> Edit(int? id, DateTime? start, DateTime? end) { }
所以我在cshtml页面中添加了这两个日期控件:
<div class="datePickers">
<div class="startDate">
Start Date
<input id="inputStartDate" type="date" asp-format="{0:yyyy-MM-dd}"/>
</div>
<div class="endDate">
End Date
<input id="inputEndDate" type="date" asp-format="{0:yyyy-MM-dd}"/>
<button formaction="/Characters/Index/">Go</button>
</div>
</div>
但是我如何将 select 的日期值添加到 asp-action?
谢谢!
不确定将 startDate 和 startDate 放在哪里,我假设您将两个日期 select 输入放在 table 之上:
<div class="datePickers">
<div class="startDate">
Start Date
<input id="inputStartDate" type="date" asp-format="{0:yyyy-MM-dd}"/>
</div>
<div class="endDate">
End Date
<input id="inputEndDate" type="date" asp-format="{0:yyyy-MM-dd}"/>
<button formaction="/Characters/Index/">Go</button>
</div>
</div>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.CharacterId)
</td>
<td>
@Html.DisplayFor(modelItem => item.CharacterDisplayName)
</td>
<td>
@Html.DisplayFor(modelItem => item.TimePathYear)
</td>
<td>
<a asp-action="Edit" asp-route-id="@item.CharacterId">Edit</a> |
</td>
</tr>
}
然后您可以使用 Jquery 通过 :
动态追加查询字符串
@section Scripts{
<script>
$(function () {
$('#inputStartDate').on('change', function () {
var querystring = 'inputStartDate=' + $("#inputStartDate").val() + '&inputEndDate=' + $("#inputEndDate").val();
$("a").each(function () {
var href = $(this).attr('href').split('?')[0];
if (href) {
href += (href.match(/\?/) ? '&' : '?') + querystring;
$(this).attr('href', href);
}
});
});
})
当用户点击编辑 link 时,您可以从服务器端获取参数:
public async Task<IActionResult> Edit(int? id, DateTime? inputStartDate, DateTime? inputEndDate)
{
}
我正在使用 .NetCore 和 Entity Framework 设计网站。
在网站上,我有一个显示 table 数据的 cshtml 页面,如下所示:
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.CharacterId)
</td>
<td>
@Html.DisplayFor(modelItem => item.CharacterDisplayName)
</td>
<td>
@Html.DisplayFor(modelItem => item.TimePathYear)
</td>
<td>
<a asp-action="Edit" asp-route-id="@item.CharacterId">Edit</a> |
</td>
</tr>
}
其中,当用户点击 "Edit" link 时,它会将它们发送到此控制器:
public async Task<IActionResult> Edit(int? id) { }
但是,我现在想传递一个用户 select 可用的日期范围,这样控制器看起来像这样:
public async Task<IActionResult> Edit(int? id, DateTime? start, DateTime? end) { }
所以我在cshtml页面中添加了这两个日期控件:
<div class="datePickers">
<div class="startDate">
Start Date
<input id="inputStartDate" type="date" asp-format="{0:yyyy-MM-dd}"/>
</div>
<div class="endDate">
End Date
<input id="inputEndDate" type="date" asp-format="{0:yyyy-MM-dd}"/>
<button formaction="/Characters/Index/">Go</button>
</div>
</div>
但是我如何将 select 的日期值添加到 asp-action?
谢谢!
不确定将 startDate 和 startDate 放在哪里,我假设您将两个日期 select 输入放在 table 之上:
<div class="datePickers">
<div class="startDate">
Start Date
<input id="inputStartDate" type="date" asp-format="{0:yyyy-MM-dd}"/>
</div>
<div class="endDate">
End Date
<input id="inputEndDate" type="date" asp-format="{0:yyyy-MM-dd}"/>
<button formaction="/Characters/Index/">Go</button>
</div>
</div>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.CharacterId)
</td>
<td>
@Html.DisplayFor(modelItem => item.CharacterDisplayName)
</td>
<td>
@Html.DisplayFor(modelItem => item.TimePathYear)
</td>
<td>
<a asp-action="Edit" asp-route-id="@item.CharacterId">Edit</a> |
</td>
</tr>
}
然后您可以使用 Jquery 通过 :
动态追加查询字符串@section Scripts{
<script>
$(function () {
$('#inputStartDate').on('change', function () {
var querystring = 'inputStartDate=' + $("#inputStartDate").val() + '&inputEndDate=' + $("#inputEndDate").val();
$("a").each(function () {
var href = $(this).attr('href').split('?')[0];
if (href) {
href += (href.match(/\?/) ? '&' : '?') + querystring;
$(this).attr('href', href);
}
});
});
})
当用户点击编辑 link 时,您可以从服务器端获取参数:
public async Task<IActionResult> Edit(int? id, DateTime? inputStartDate, DateTime? inputEndDate)
{
}