从CSHTML页面发送日期值到控制器

时间:2019-02-06 17:26:49

标签: razor entity-framework-6 asp.net-core-2.0

我正在使用.NetCore和Entity Framework设计网站。

在网站上,我有一个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) { }

但是,我现在想传递一个用户可选择的日期范围,以便控制器看起来像这样:

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-action中?

谢谢!

1 个答案:

答案 0 :(得分:1)

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

int main()
{
    FILE *fp;
    char c;
    char buff[255];
    fp=fopen("text.txt","wr");
    fputs("one\ntwo\nthree\nfour",fp);
    fclose(fp);
    return(0);
}

然后,您可以使用Jquery通过以下方式动态附加查询字符串:

    <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>
}

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

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

                }
            });
        });
    })