我有2个动作方法,其中一个作为“获取”方法使用,但显示一个列表,并且仅从用户那里获取1个值。另一个使用接收到的值更新数据库。但是,似乎我没有将此值传递给第二个控制器,因为调试代码时我将其视为null
。
谁能帮忙找到我的错误?
动作方法:
[AllowAnonymous]
public ActionResult AvaliaAluno()
{
var user = User.Identity.GetUserId();
if (User.IsInRole("Docentes") || User.IsInRole("Comissao"))
{
Docente d = db.Docentes.SingleOrDefault(x => x.UserId == user);
var vm = new ViewModels
{
Propostas = db.Propostas.Where(x => x.DocenteId == d.DocenteId).ToList(),
Alunos = db.Alunos.ToList(),
Candidaturas = db.Candidaturas.ToList()
};
return View(vm);
}
if (User.IsInRole("Empresas"))
{
Empresa d = db.Empresas.SingleOrDefault(x => x.UserId == user);
var vm = new ViewModels
{
Propostas = db.Propostas.Where(x => x.EmpresaId == d.EmpresaId).ToList(),
Alunos = db.Alunos.ToList(),
Candidaturas = db.Candidaturas.ToList()
};
return View(vm);
}
return View();
}
[AllowAnonymous]
public ActionResult ConfirmaAvaliacao(int id, decimal? avaliacao)
{
Candidatura c = db.Candidaturas.SingleOrDefault(x => x.CandidaturaId == id);
Proposta p = db.Propostas.SingleOrDefault(x => x.PropostaId == c.PropostaId);
if (User.IsInRole("Docentes") || User.IsInRole("Comissao"))
{
p.AvaliacaoDocenteAluno = avaliacao;
return RedirectToAction("AvaliaAluno");
}
if (User.IsInRole("Empresas"))
{
p.AvaliacaoEmpresaALuno = avaliacao;
return RedirectToAction("AvaliaAluno");
}
return RedirectToAction("Index", "Home");
}
和视图:
@model DEIS_ISEC.Models.ViewModels
<h3>Alunos Orientados por si</h3>
<table class="table">
<tr>
<th>
Nome do Aluno
</th>
<th>
Número do Aluno
</th>
<th>
Ramo Inscrito
</th>
<th>
Titulo da Proposta
</th>
<th>
Ramo da Proposta
</th>
<th>
Data de Início
</th>
<th>
Data de Fim
</th>
<th>
Avaliar
</th>
<th></th>
</tr>
@foreach (var item in Model.Propostas)
{
<tr>
@foreach (var c in Model.Candidaturas)
{
if (c.PropostaId == item.PropostaId)
{
foreach (var a in Model.Alunos)
{
if (a.AlunoId == c.AlunoId)
{
<td>
@Html.DisplayFor(modelItem => a.Nome) @Html.DisplayFor(modelItem => a.Apelido)
</td>
<td>
@Html.DisplayFor(modelItem => a.NumeroAluno)
</td>
<td>
@Html.DisplayFor(modelItem => a.Ramo)
</td>
}
}
}
}
<td>
@Html.DisplayFor(modelItem => item.Titulo)
</td>
<td>
@Html.DisplayFor(modelItem => item.Ramo)
</td>
<td>
@Html.DisplayFor(modelItem => item.DataInicio)
</td>
<td>
@Html.DisplayFor(modelItem => item.DataFim)
</td>
<td>
@Html.EditorFor(modelItem => item.AvaliacaoDocenteAluno, new { htmlAttributes = new { @class = "form-control", @style = "width:50% !important; min-width:50px;" } })
@Html.ValidationMessageFor(modelItem => item.AvaliacaoDocenteAluno, "", new { @class = "text-danger" })
</td>
<td>
@Html.ActionLink("Guardar", "ConfirmaAvaliacao", new { id = item.CandidaturaId, avaliacao = item.AvaliacaoDocenteAluno }, new { @class = "btn btn-info btn-md" })
</td>
</tr>
}
我相信从这里获得用户输入的那一刻:
@Html.EditorFor(modelItem => item.AvaliacaoDocenteAluno, new { htmlAttributes = new { @class = "form-control", @style = "width:50% !important; min-width:50px;" } })
@Html.ValidationMessageFor(modelItem => item.AvaliacaoDocenteAluno, "", new { @class = "text-danger" })
出乎意料的事情发生。
答案 0 :(得分:0)
我建议您查看ASP.NET MVC 4 Helpers, Forms and Validation > Exercise 3: Creating the Edit View,了解如何使用 ASP.Net MVC 实施编辑机制。
通常,我建议您仔细阅读链接中的完整示例,因为它涵盖了构建 ASP.Net MVC 应用程序所需的许多主题。
希望有帮助!