【问题标题】:Display error message if ID not Found in mvc4如果在 mvc4 中未找到 ID,则显示错误消息
【发布时间】:2015-10-28 11:57:35
【问题描述】:

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

如果我要创建新日记,我需要 CustomerID。

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

我只想看到“找不到 ID”的错误消息

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

// POST:/日记/创建

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

        return PartialView("_CreateDiary");
    }

【问题讨论】:

  • 不确定我是否理解正确,但为什么不添加一个引发/显示错误的条件?
  • 实际上我不知道如何应用该条件,您可以通过使用该条件修改我的代码
  • 您应该将 customerID 提供给 Create 操作。查看您共享的图像,您正在查看客户日记列表,然后添加新日记.. 所以您应该有列表的客户 ID,所以传递一个很长的,存储为隐藏字段,并消除客户 ID文本框..至少,它应该使用下拉列表来显示外键字段..
  • @JamieD77 你能告诉我如何通过修改我的代码来做到这一点,因为我不知道该怎么做,请
  • 你没有展示你的模型,或者视图或者 GET 方法很难理解你真正的问题是什么,但它似乎与this question有关

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


【解决方案1】:

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

控制器

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

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

查看

@Html.ValidationMessage("CustomerId")

我建议改为显示用户选择的客户列表,这将改善 UI 体验并避免此类错误。

完整的控制器代码

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

【讨论】:

  • 对不起,我需要在控制器的哪里添加这个条件?它在创建动作中吗?
  • 在创建后,我添加了完整的控制器代码和您需要添加到视图中的位。请参见上文。
  • 谢谢!是的,这似乎很容易显示数据库中存在的客户列表,你能告诉我如何做到这一点
  • @user5487417 没问题。我会在AvailableCustomers 属性中添加一个客户对象列表。从您的控制器中填充它们。添加带有所选属性的SelectedCustomerId。然后用下拉列表绑定。试一试,如果您遇到困难,请创建一个新问题,有人会很快回答。祝你好运。 :)
  • 此代码正在运行并显示未找到客户,但它有一些问题,例如它返回查看而不是给我直接错误消息,
猜你喜欢
  • 1970-01-01
  • 2012-05-31
  • 1970-01-01
  • 2013-04-21
  • 2014-09-21
  • 1970-01-01
  • 2019-02-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多