我需要使用用户输入来过滤一些列表。我创建了视图,并使用了它自动生成的列。 Codigo列没有问题,但是Cedula或Email却不起作用,我需要使用有效的文本框。
Buscar expediente Solicitante por celuda: @Html.TextBox("Cedula")<br/>
Buscar expediente funcionario por celuda: @Html.TextBox("Email")<br />
这是我的控制器的代码。当我在Codigo文本字段中输入内容时,它会毫无问题地获得值,但是当我在Cedula或Email中执行相同操作时,它只会得到null。知道发生了什么事吗?
[HttpPost]
public ActionResult BuscarExpediente(int? Codigo , int? Cedula, string Email)
{
//Expediente expediente = db.Expediente.Find(id);
//var expediente = db.Expediente.SingleOrDefault(e => e.Codigo == id);
//si me dan el id de expediente lo busco de esta forma
if ((Codigo != null) &&(Cedula == null) &&(Email == null))
{
//var expediente = db.Expediente.Where(E => E.Codigo == Codigo).SingleOrDefault();
//return View(expediente);
TempData["idExpedienteBuscar"] = Codigo;
return RedirectToAction("ExpedientesPorId");
}
//si me dal la cedula de un solicitante busco de esta forma
if((Cedula != null)&& (Email == null)&& (Codigo == null))
{
TempData["ExpedientesCedulaSolicitante"] = Cedula;
return RedirectToAction("ExpedientesPorCedulaSolicitante");
}
//si me dan un funcionario busco de esta forma
if((Email != null)&& (Codigo == null) && (Cedula == null))
{
TempData["ExpedienteBuscarFuncionarioID"] = Email;
return RedirectToAction("ExpedientesPorFuncionario");
}
//si no me dan nada busco de estra otra
else
{
//que de el mensaje de que solo se puede insertar un campo de busqueda
//hay que poner en el view un label o algo para tirar el msj
}
//ViewBag.FechInicio = expediente.FechaCreacion;
//ViewBag.Tramite = expediente.Tramite.Titulo;
//ViewBag.Funcionario = expediente.Funcionario.Nombre;
return View();
}
这是视图的代码
@model Entrega02Programacion03.Models.Expediente
@{
ViewBag.Title = "BuscarExpediente";
}
<h2>BuscarExpediente</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>Expediente</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.Codigo, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Codigo, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Codigo, "", new { @class = "text-danger" })
</div>
</div>
@* Buscar expediente Solicitante por celuda: @Html.TextBox("Cedula")<br/>
Buscar expediente funcionario por celuda: @Html.TextBox("Email")<br />*@
<div class="form-group">
@Html.LabelFor(model => model.Solicitante.Cedula , htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Solicitante.Cedula, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Solicitante.Cedula, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Funcionario.Email, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Funcionario.Email, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Funcionario.Email, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.abierto, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.abierto, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.abierto, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Buscar Expediente" class="btn btn-default" />
</div>
</div>
</div>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
答案 0 :(得分:0)
似乎是不可访问的字段,因为它们不在“根”级别上-在其他模型“内部”可用。尝试将模型切换为:
{{1}}