我运行的应用程序在此Microsoft Tutorial,当我尝试在应用程序的输入框中输入网址(例如,http://msdn.com
或http://blogs.msdn.com/adonet
教程如图所示),并点击提交,我得到以下验证错误:ASP.NET核心教程错误“值‘http://msdn.com’是无效的网址
The value 'http://msdn.com' is not valid for Url.
当我调试应用程序,我注意到,在本教程中ModelState.IsValid值下面的代码显示为'假'。这里缺少什么以及如何修复?
public IActionResult Create(Blog blog)
{
if(ModelState.IsValid)
{
_context.Blogs.Add(blog);
_context.SaveChanges();
return RedirectToAction("Index");
}
return View(blog);
}
注意要点:
- 我使用的是最新的ASP.NET 1.0的核心和VS2015更新3在Windows 8.1
- 在[于2016年6月27日发布]本教程的Creat.chtml观点,
<input asp-for="Url" class="form-control" />
最初显示为只读,所以我说TYPE =“文本”属性存在,并且成为读/写 - 我的应用程序是本教程的精确副本(我没有复制/粘贴),除了而不是选择'无身份验证“我在创建poroject时选择了”个人用户帐户“选项。但是,我认为,这不应该有任何区别。
UPDATE
我加入var errors = ModelState.Values.SelectMany(v => v.Errors);
略高于if(ModelState.IsValid)
声明,我看到显示的error collection
值调试窗口下面,但不能找出错误的原因。也许。有人可以帮助:
更新2:
我发现我的错误。我在Blog类的public int Url { get; set; }
属性中使用int数据类型而不是使用字符串。将其更改为字符串,现在它正在工作。有人可能会帮助图像中的错误所说的话。
“ModelState”中的错误说了什么?您可以查看所有的错误的详细信息 - 这里是如何:http://stackoverflow.com/questions/1352948/how-to-get-all-errors-from-asp-net-mvc-modelstate – PeteGO
你有'@model EFGetStarted.AspNetCore.NewDb.Models.Blog'在顶部? – prospector
@prospector是的,我确实有这个问题,它也通过intellisense得到了认可。 – nam