Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Razor 从cshtml页面向控制器发送日期值_Razor_Entity Framework 6_Asp.net Core 2.0 - Fatal编程技术网

Razor 从cshtml页面向控制器发送日期值

Razor 从cshtml页面向控制器发送日期值,razor,entity-framework-6,asp.net-core-2.0,Razor,Entity Framework 6,Asp.net Core 2.0,我正在使用.NetCore和实体框架来设计一个站点 在该站点上,我有一个cshtml页面,显示如下数据表: @foreach (var item in Model) { <tr> <td> @Html.DisplayFor(modelItem => item.CharacterId) </td> <td>

我正在使用.NetCore和实体框架来设计一个站点

在该站点上,我有一个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>
}
public async Task<IActionResult> Edit(int? id, DateTime? start, DateTime? end) { }
其中,当用户单击编辑链接时,会将其发送到此控制器:

public async Task<IActionResult> Edit(int? id) { }
但是,我现在希望传入一个用户可选择的日期范围,以便控制器如下所示:

@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>
}
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>
但是如何将他们选择的日期值添加到asp操作中


谢谢

不确定startDate和startDate放在哪里,我假设您将两个日期选择输入放在表的顶部:

    <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);

                }
            });
        });
    })
当用户单击编辑链接时,您可以从服务器端获取参数:

public async Task<IActionResult> Edit(int? id, DateTime? inputStartDate, DateTime? inputEndDate)
{

}