ASP.NET核心教程错误'值' http://msdn.com'对Url无效

时间:2016-07-02 23:47:14

标签: c# visual-studio-2015 asp.net-core

我在此Microsoft Tutorial中运行应用,当我尝试在应用的输入框中输入网址时(例如,http://msdn.comhttp://blogs.msdn.com/adonet,如图所示在教程中)并单击提交我得到以下验证错误:

The value 'http://msdn.com' is not valid for Url.

当我调试应用程序时,我注意到在本教程的以下代码中,ModelState.IsValid值显示为' false'。这里缺少什么以及如何解决?

public IActionResult Create(Blog blog)
        {
            if(ModelState.IsValid)
            {
                _context.Blogs.Add(blog);
                _context.SaveChanges();
                return RedirectToAction("Index");
            }

            return View(blog);
        }

注意事项

  1. 我在Windows 8.1上使用最新的ASP.NET Core 1.0和VS2015-Update 3 [2016年6月27日发布]
  2. 在教程的Creat.chtml视图中,<input asp-for="Url" class="form-control" />最初显示为只读,因此我添加了type =&#34; text&#34;属性在那里它变成了读/写
  3. 我的应用程序是教程的精确副本(我确实复制/过去),除了选择“没有身份验证”和“#39;我选择了个人用户帐户&#39;创建poroject时的选项。但是,我认为,这应该没有任何区别。
  4. 更新

    我在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

1 个答案:

答案 0 :(得分:1)

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