2016-07-02 100 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。感謝所有可能試圖提供幫助的讀者。