我有搜索视图,用户在其中输入员工ID,单击按钮后将执行操作方法,并且用户将被重定向到员工详细信息视图。
如果员工ID不匹配,我想保留相同的搜索视图,并在MVC中显示带有未找到员工详细信息的标签,
请在我的控制器中完成上述功能。
[HttpGet]
public async Task<ActionResult> Details(string firstName)
{
var empDetails = await _context.EmpDetails
.FirstOrDefaultAsync(m => m.FirstName == firstName);
if (empDetails == null)
{
// ???
}
return View(empDetails);
}
具有ViewModel类是一种很好的做法。创建一个,然后使用它将域对象和消息传输到您的视图。像这样:
class EmpDetailsViewModel
{
public EmpDetail Emp { get;set; }
public string Message { get;set; }
}
[HttpGet]
public async Task<ActionResult> Details(string firstName)
{
var vm = new EmpDetailsViewModel();
var empDetails = await _context.EmpDetails
.FirstOrDefaultAsync(m => m.FirstName == firstName);
if (empDetails == null)
{
vm.Message = "Employee not found (or whatever)"
}
else
{
vm.Emp = empDetails;
}
return View(vm);
}
然后,在您看来,只需执行
if (Model.Emp == null)
{
<span>@Model.Message</span>
}
else
{
<div>Emp details stuff </div>
}
我了解的是,当找不到雇员时,您想返回一条消息。
尝试一下
[HttpGet]
public async Task<ActionResult> Details(string firstName)
{
var empDetails = await _context.EmpDetails
.FirstOrDefaultAsync(m => m.FirstName == firstName);
if (empDetails == null)
{
return Content("Employee not found");
}
return View(empDetails);
}
在视图中,从响应中提取消息。