Javascript 传递参数日期时间?在mvc中使用jquery

Javascript 传递参数日期时间?在mvc中使用jquery,javascript,c#,jquery,asp.net-mvc,Javascript,C#,Jquery,Asp.net Mvc,Iam尝试使用javasqcrip和jquery将一些参数传递给控制器 代码如下: @using PagedList.Mvc; @model PagedList.IPagedList<Universidad.Entidades.PER_PERSONAS> @{ Layout = "~/Views/Shared/_Layout.cshtml"; var titulo = ViewBag.Title = "Lista de personas"; var l

Iam尝试使用javasqcrip和jquery将一些参数传递给控制器

代码如下:

@using PagedList.Mvc;
@model PagedList.IPagedList<Universidad.Entidades.PER_PERSONAS>

@{

    Layout = "~/Views/Shared/_Layout.cshtml";

    var titulo = ViewBag.Title = "Lista de personas";

    var listaTipoPersona = (IEnumerable<SelectListItem>)ViewBag.ListaTipoPersona;
}

@section Head
{
    <script src="/Scripts/bootstrap.js" type="text/javascript"></script>
    <link href="/Content/bootstrap.css" type="text/css" rel="stylesheet" />
    <script src="~/Scripts/bootstrap-datepicker.js" type="text/javascript"></script>
    <link href="~/Content/bootstrap-datepicker.css" type="text/css" rel="stylesheet" />
    <script src="~/Scripts/bootstrap-select.js" type="text/javascript"></script>
    <link href="~/Content/bootstrap-select.css" type="text/css" rel="stylesheet" />
    <script src="~/Scripts/bootstrap-multiselect.js" type="text/javascript"></script>
    <link href="~/Content/bootstrap-multiselect.css" type="text/css" rel="stylesheet" />
}

@section Scripts
{
    <script type="text/javascript">
        $(document).ready(function () {
            $('.datepicker').datepicker({
                language: 'es',
                format: 'dd/mm/yyyy',
                autoclose: true
            });

            $('.selectpicker').selectpicker({
                style: 'btn-default btn-sm'
            });
        });


        $(document).ready(function () {
            $("#ddlTipoPersona").change(function () {
                debugger;
                FiltraPersonas();
            });
        });

        function FiltraPersonas() {

            var idTipoPersona = $("#ddlTipoPersona").val();
            var fechaInicio = $("#txtFechaIngresoDe").val();
            var fechaFin = $("#txtFechaIngresoHasta").val();
            var idPersona = $("#txtIdLinkPersona").val();

            var path = '@Url.Action("EnlistarPersonas", "Personas")' + '?idTipoPersona=' + idTipoPersona + '&idPersona=' + idPersona + '&fechaInicio=' + fechaInicio + '&fechaFin=' + fechaFin + '&page=1';
            window.location.href(path);
        }
    </script>
}
<br />
<h3>@titulo</h3>
<br />
<div class="form-group row form-group input-group-sm" style="margin: 5px; padding: 10px;">
    <div class="row">
        <div class="row" style="margin: 0 0 0 0; padding: 0 0 0 0;">
            <div class="form-group col-lg-offset-3 col-md-6">
                <div class="input-group input-group-sm">
                    @Html.Label("Fecha Ingreso de", new { @class = "input-group-addon" })
                    @Html.TextBox("txtFechaIngresoDe", null, new { @class = "form-control datepicker" })
                    @Html.Label("Hasta", new { @class = "input-group-addon" })
                    @Html.TextBox("txtFechaIngresoHasta", null, new { @class = "form-control datepicker" })
                </div>
            </div>
        </div>
    </div>
    <div class="row">
        <div class="row" style="margin: 0 0 0 0; padding: 0 0 0 0;">
            <div class="form-group input-group-sm form-group-sm">
                <div class="col-lg-offset-2 col-md-4">
                    <div class="input-group">
                        @Html.Label("No de Persona", new { @class = "input-group-addon" })
                        @Html.TextBox("txtIdLinkPersona", null, new { @class = "form-control" })
                    </div>
                </div>
                <div class="col-md-4">
                    <div class="input-group">
                        @Html.Label("Tipo de Persona", new { @class = "input-group-addon" })
                        @Html.DropDownList("ddlTipoPersona", listaTipoPersona, new { @class = "selectpicker", data_live_search = true })
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<br />
<div>
    <table class="table">
        <tr>
            <th>
                Id
                @*@Html.ActionLink("Last Name", "Index", new { sortOrder = ViewBag.NameSortParm, currentFilter = ViewBag.CurrentFilter })*@
            </th>
            <th>
                Nombre
            </th>
            <th>
                Apellido Paterno
                @*@Html.ActionLink("Enrollment Date", "Index", new { sortOrder = ViewBag.DateSortParm, currentFilter = ViewBag.CurrentFilter })*@
            </th>
            <th>
                Apellido Materno
            </th>
            <th>
                Fecha de ingreso
            </th>
        </tr>

        @foreach (var item in Model)
        {
            <tr>
                <td>
                    @Html.DisplayFor(modelItem => item.ID_PER_LINKID)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.NOMBRE)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.A_PATERNO)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.A_MATERNO)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.FECHAINGRESO)
                </td>
            </tr>
        }
    </table>

    <br />
    Pagina @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) De @Model.PageCount

    @Html.PagedListPager(Model, page => Url.Action("EnlistarPersonas", new { page, sortOrder = ViewBag.CurrentSort, currentFilter = ViewBag.CurrentFilter }))
</div>
@使用PagedList.Mvc;
@型号PagedList.IPagedList
@{
Layout=“~/Views/Shared/_Layout.cshtml”;
var titulo=ViewBag.Title=“Lista de personas”;
var listaTipoPersona=(IEnumerable)ViewBag.listaTipoPersona;
}
@科长
{
}
@节脚本
{
$(文档).ready(函数(){
$('.datepicker').datepicker({
语言:'es',
格式:“dd/mm/yyyy”,
自动关闭:正确
});
$('.selectpicker')。selectpicker({
样式:“btn默认btn sm”
});
});
$(文档).ready(函数(){
$(“#ddltipoppersona”).change(函数(){
调试器;
过滤单胞菌();
});
});
功能过滤器{
var idTipoPersona=$(“#ddltipoppersona”).val();
var fechaInicio=$(“#txtfchaingresode”).val();
var fechaFin=$(“#txtFechaIngresoHasta”).val();
var idPersona=$(“#txtIdLinkPersona”).val();
var path='@Url.Action(“EnstractArpersonas”,“Personas”)'+'?idTipoPersona='+idTipoPersona+'&idPersona='+idPersona+'&fechaInicio='+fechaInicio+'&fechaFin='+fechaFin+'&page=1';
window.location.href(路径);
}
}

@提特罗
@Label(“Fecha-Ingreso-de”,new{@class=“input-group-addon”}) @TextBox(“txtFechaIngresoDe”,null,新{@class=“form control datepicker”}) @Label(“Hasta”,新的{@class=“input group addon”}) @TextBox(“txtFechaIngresoHasta”,null,新{@class=“form control datepicker”}) @Label(“No de Persona”,new{@class=“input group addon”}) @TextBox(“txtIdLinkPersona”,null,新{@class=“form control”}) @Label(“Tipo de Persona”,new{@class=“input group addon”}) @DropDownList(“ddlTipoPersona”,listaTipoPersona,new{@class=“selectpicker”,data\u live\u search=true})
身份证件 @*@ActionLink(“姓氏”,“索引”,新的{sortOrder=ViewBag.NameSortParm,currentFilter=ViewBag.currentFilter})*@ 名义 阿佩利多帕特诺 @*@ActionLink(“注册日期”,“索引”,新{sortOrder=ViewBag.DateSortParm,currentFilter=ViewBag.currentFilter})*@ 阿佩利多马特诺酒店 安格尔费查酒店 @foreach(模型中的var项目) { @DisplayFor(modelItem=>item.ID\u PER\u LINKID) @DisplayFor(modeleItem=>item.NOMBRE) @DisplayFor(modeleItem=>item.A\u PATERNO) @DisplayFor(modeleItem=>item.A_MATERNO) @DisplayFor(modelItem=>item.FECHAINGRESO) }
Pagina@(Model.PageCountUrl.Action(“登记程序”,新{page,sortOrder=ViewBag.CurrentSort,currentFilter=ViewBag.currentFilter}))
控制器是

    [SessionExpireFilter]
    public async Task<ActionResult> EnlistarPersonas(int? page, DateTime? fechaInicio, DateTime? fechaFin, int? idTipoPersona, string idPersona)
    {
        Sesion();

        var sesion = (Sesion)Session["Sesion"];
        var servicioPersonas = new SvcPersonas(sesion);

        List<PER_PERSONAS> listaPersonas;

        if (fechaInicio == null && fechaFin == null && idPersona == null && idTipoPersona == null)
        {
            listaPersonas = await servicioPersonas.ObtenListaPersonas();
        }
        else
        {
            listaPersonas = await servicioPersonas.ObtenListaPersonasFiltro(idPersona, fechaInicio, fechaFin, idTipoPersona);
        }

        var listaTipoPersona = await servicioPersonas.ObtenCatTipoPersona();

        var enlistarTipoPersona = listaTipoPersona.Select(c => new SelectListItem
        {
            Value = c.ID_TIPO_PERSONA.ToString(CultureInfo.InvariantCulture),
            Text = c.TIPO_PERSONA
        }).ToArray();

        ViewBag.ListaTipoPersona = enlistarTipoPersona;

        const int pageSize = 7;
        var pageNumber = (page ?? 1);

        return View(listaPersonas.ToPagedList(pageNumber, pageSize));
    }
[SessionExpireFilter]
公共异步任务登记器(int?page,DateTime?fechaInicio,DateTime?fechaFin,int?idTipoPersona,string idPersona)
{
Sesion();
变量sesion=(sesion)会话[“sesion”];
var servicioPersonas=新的SvcPersonas(sesion);
列出个人信息;
如果(fechaInicio==null&&fechaFin==null&&idPersona==null&&idTipoPersona==null)
{
listaPersonas=等待服务人格。obtEnglistApersonas();
}
其他的
{
ListPapersonas=等待服务人格。获得服务人格(idPersona、fechaInicio、fechaFin、Idtipoppersona);
}
var listaTipoPersona=等待服务角色。obtencatipopersona();
var ENSTERATIPOPERSONA=listaTipoPersona.Select(c=>new SelectListItem
{
Value=c.ID\u TIPO\u PERSONA.ToString(CultureInfo.InvariantCulture),
Text=c.TIPO_PERSONA
}).ToArray();
ViewBag.ListaTipoPersona=登记艺人popersona;
常量int pageSize=7;
变量pageNumber=(第1页);
返回视图(listaPersonas.ToPagedList(pageNumber,pageSize));
}
在请求y填充所有fiels和javascrip senden时,控制器中的变量fechaInicio resive很好地保留了参数,但由于某些原因,fechaFin在控制器操作中始终保持resive null


为什么会出现问题?

正如您看到和看到的,MVC上有很多关于日期的技巧

由于您没有使用模型,我建议您以字符串形式接收日期,将控制器更改为:

using System.Globalization;
...

public async Task<ActionResult> EnlistarPersonas(int? page, string fechaInicio, string fechaFin, int? idTipoPersona, string idPersona)
{
    DateTime? fInicio = null;
    if (!string.IsNullOrEmpty(fechaInicio))
    {
        DateTime.TryParseExact(fechaInicio, "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out fInicio))
    }

    DateTime? fFin = null;
    if (!string.IsNullOrEmpty(fechaFin))
    {
        DateTime.TryParseExact(fechaFin, "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out fFin))
    }

    ... The rest of your controller
}

你能不能减少代码量,更具体一点,问题出在哪里?当我生成一个请求时,在JavaScript的FiltrarPersonas方法中发送了几个参数,并发送到控制器,但变量为null(因为我确保它们以js发送),但fechaInicio到达驱动器
var path = '@Url.Action("EnlistarPersonas", "Personas")' + '?idTipoPersona=' + idTipoPersona + '&idPersona=' + idPersona + '&fechaInicio=' + encodeURIComponent(fechaInicio) + '&fechaFin=' + encodeURIComponent(fechaFin) + '&page=1';