如果在mvc4中找不到ID,则显示错误消息

时间:2015-10-28 11:57:35

标签: c# asp.net asp.net-mvc entity-framework asp.net-mvc-4

我的员工(客户)日记基于CustomerID see this image

如果我要创建新日记,我需要客户ID。

如果我使用数据库中存在的正确CustomerId,那么它可以正常工作,但是如果我使用的是不正确的customerID,那么它会向我显示视图并显示有关其他字段的错误。

我只想看到错误消息“ID not found”

这是我的创建日记代码和图像@nd image如果我输错了customerID,我只想看一条错误消息 我的创建日记的控制器代码

// POST:/ Diary / Create

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create(Diary diary)
    {
        if (ModelState.IsValid)
        {
            cd.Diaries.Add(diary);
            cd.SaveChanges();
            return RedirectToAction("Index","Home");
        }

        return PartialView("_CreateDiary");
    }

1 个答案:

答案 0 :(得分:1)

首先根据输入的CustomerId添加要检查的条件,并根据需要添加模型错误:

<强>控制器

if (!cd.Customers.Any(c => c.Id == diary.CustomerId)
{
    ModelState.AddModelError("CustomerId", "Customer not found");
}

然后将以下内容添加到您的视图(或ValidationSummary)

查看

@Html.ValidationMessage("CustomerId")

我建议显示用户选择的客户列表,这样可以改善用户界面体验并避免这样的错误。

完整控制器代码

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Diary diary)
{

   if (!cd.Customers.Any(c => c.Id == diary.CustomerId)
   {
    ModelState.AddModelError("CustomerId", "Customer not found");
    }
    if (ModelState.IsValid)
    {
        cd.Diaries.Add(diary);
        cd.SaveChanges();
        return RedirectToAction("Index","Home");
    }

    return PartialView("_CreateDiary");
}