Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么不是';视图上是否显示我的ModelState错误?_C#_Asp.net Mvc - Fatal编程技术网

C# 为什么不是';视图上是否显示我的ModelState错误?

C# 为什么不是';视图上是否显示我的ModelState错误?,c#,asp.net-mvc,C#,Asp.net Mvc,我按照[this Response here][1]做了关于ModelState和错误的事情,但我认为我遗漏了一些东西,因为我仍然没有在我的页面上看到错误 private ApplicationDbContext db = new ApplicationDbContext(); // GET: User [HttpGet] [Route("Create/{token}", Name = "Create")] public async Task<Ac

我按照[this Response here][1]做了关于ModelState和错误的事情,但我认为我遗漏了一些东西,因为我仍然没有在我的页面上看到错误

private ApplicationDbContext db = new ApplicationDbContext();

// GET: User
[HttpGet]
[Route("Create/{token}", Name = "Create")]
public async Task<ActionResult> Create(string token)
{
    try
    {
        if (TempData["err"] != null)
        {
            ModelState.AddModelError("", TempData["err"] as Exception);
            TempData.Clear();
            return View();
        }
        else
        {
            token = "foobar"; // For testing to force an error.
            var municipality = await db.Municipalities.SingleAsync(x => x.OneOffToken == token);
            return View(municipality);
        }
    }
    catch (Exception ex)
    {
        TempData["err"] = ex;
        return View();
    }
}
private ApplicationDbContext db=new ApplicationDbContext();
//获取:用户
[HttpGet]
[路由(“创建/{token}”,Name=“创建”)]
公共异步任务创建(字符串令牌)
{
尝试
{
if(TempData[“err”]!=null)
{
AddModelError(“,TempData[“err”]作为异常);
TempData.Clear();
返回视图();
}
其他的
{
token=“foobar”;//用于强制执行错误的测试。
var unicity=await db.unicities.SingleAsync(x=>x.OneOffToken==token);
返回视图(市政);
}
}
捕获(例外情况除外)
{
TempData[“err”]=ex;
返回视图();
}
}

这会像预期的那样将模型错误添加到ModelState中,但是如何准确地将错误显示在视图中呢?当我测试页面时,我看不到任何错误的迹象,除了视图上完全没有任何错误(正如预期的那样,尽管错误消息会很好)。

根据Steve Greene对问题的评论,我在视图上使用了ValidationSummary来显示自定义错误

这涉及到将ValidationSummary添加到视图:

@Html.ValidationSummary(false, "", new { @class = "text-danger" })
以及对后端逻辑的轻微更改,以实际将异常的
消息
放入ModelState:

if (TempData["err"] != null) {
    // Cast the object in TempData to an exception.
    var ex = TempData["err"] as Exception;

    // Add to ModelState.
    ModelState.AddModelError("err", ex.Message);

    // Clear TempData so we don't get stuck here.
    TempData.Clear();

    return View();
}
else {
    // There's no error so normal page initialization can go here.
}

值得注意的是,
catch
在设置TempData之后应该
RedirectToAction
,这是因为返回的视图在其ModelState中不会有ModelError,因此要显示错误,实际上,在页面出现后,您必须手动刷新该页面。

视图中是否有针对s的
validationmessage?或ValidationSummary。