实体框架:视图中文本字段中的值返回null

时间:2018-07-02 16:53:21

标签: c# entity-framework

我需要使用用户输入来过滤一些列表。我创建了视图,并使用了它自动生成的列。 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>

1 个答案:

答案 0 :(得分:0)

似乎是不可访问的字段,因为它们不在“根”级别上-在其他模型“内部”可用。尝试将模型切换为:

{{1}}