如果未找到数据并在同一视图中显示未找到消息,请返回同一视图

问题描述 投票:0回答:2

我有搜索视图,用户在其中输入员工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);
    } 
asp.net-mvc
2个回答
0
投票

具有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>
}

0
投票

我了解的是,当找不到雇员时,您想返回一条消息。

尝试一下

[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);
} 

在视图中,从响应中提取消息。

© www.soinside.com 2019 - 2024. All rights reserved.