Javascript 传递参数日期时间?在mvc中使用jquery
Iam尝试使用javasqcrip和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
@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';