2016-07-02 69 views
0

我运行的应用程序在此Microsoft Tutorial,当我尝试在应用程序的输入框中输入网址(例如,http://msdn.comhttp://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); 
     } 

注意要点

  1. 我使用的是最新的ASP.NET 1.0的核心和VS2015更新3在Windows 8.1
  2. 在[于2016年6月27日发布]本教程的Creat.chtml观点,<input asp-for="Url" class="form-control" />最初显示为只读,所以我说TYPE =“文本”属性存在,并且成为读/写
  3. 我的应用程序是本教程的精确副本(我没有复制/粘贴),除了而不是选择'无身份验证“我在创建poroject时选择了”个人用户帐户“选项。但是,我认为,这不应该有任何区别。

UPDATE

我加入var errors = ModelState.Values.SelectMany(v => v.Errors);略高于if(ModelState.IsValid)声明,我看到显示的error collection值调试窗口下面,但不能找出错误的原因。也许。有人可以帮助:

更新2

发现我的错误。我在Blog类的public int Url { get; set; }属性中使用int数据类型而不是使用字符串。将其更改为字符串,现在它正在工作。有人可能会帮助图像中的错误所说的话。

enter image description here

+0

“ModelState”中的错误说了什么?您可以查看所有的错误的详细信息 - 这里是如何:http://stackoverflow.com/questions/1352948/how-to-get-all-errors-from-asp-net-mvc-modelstate – PeteGO

+0

你有'@model EFGetStarted.AspNetCore.NewDb.Models.Blog'在顶部? – prospector

+0

@prospector是的,我确实有这个问题,它也通过intellisense得到了认可。 – nam

回答

1

我解决了这个问题。我的部分有一个错误。我在Blog类的属性public int Url { get; set; }中使用数据类型int。将其更改为字符串。然后删除SQL Server中的数据库和项目中相应的迁移文件夹。重新运行包管理器命令Add-Migration MyFirstMigration -context BloggingContextUpdate-Database -context BloggingContext。现在正在工作。虽然应用程序是一个复制/粘贴从这个Microsoft Tutorial,后来我试图测试创建通过快捷键为explained here一个属性,但忘记了快捷键创建数据类型为int。感谢所有可能试图提供帮助的读者。