ASP.NET MVC Preview3 bug 及期望
ASP.NET MVC Preview3剛出來就發bug,不是想潑冷水,而是一貫的為了和大家一起更好地討論、學習、使用,大家一起進步。
Pre3和Pre2的主要區別在Scott的Blog上面已經比較清楚地展示了,並且官方也提供了了一個升級文件:http://weblogs.asp.net/scottgu/archive/2008/05/27/asp-net-mvc-preview-3-release.aspx。
今天大概看了幾個關鍵的地方,目前發現了在ActionURL這個用法上面沒有太大變化的地方,但是在獲取上面反而有點小問題:
一、比如當你試圖在AdminController(對應的View)裡面輸出Url.Action("Foo")的時候,理想情況下應該是返回/Admin[.mvc]/Foo,但是不幸的事情發生了,當你在HomeController裡面新增一個Foo的Action,並且在global.asax.cs裡面新增了一條Home/Foo的URL規則之後(不新增不會有問題),你再用Url.Action("Foo")的時候,返回的將有可能是這樣:/Home[.mvc]/Foo,所以為了保證持久的可用性,在這種情況下我們必須放棄Url.Action("Foo")這種方式,轉而使用這樣的重寫方法:Url.Action("Foo","Admin")。不光是Url.Action是這樣,Html.ActionLink也存在著同樣的問題。我反覆在IIS/VS以及routes.MapRoute/routes.Add方式進行了測試,結果都是一樣的。這點是很噁心的,不知道是我這裡環境的問題還是大家的測試結果也這樣?歡迎大家反饋!
二、官方的升級文件上面有這麼一段話:
· dit the Default.aspx file and add the following line:
This redirect is not necessary for IIS 7. This is a workaround for an issue with how the Web server that is built into Visual Studio (the ASP.NET Development Server) works with routing.
大概意思是說找到Default.aspx 並且加入這段程式碼: 。在IIS7中是不需要這麼做的,為的是當你用VS測試或者IIS7以下的IIS時候需要用這個來做一個根目錄的“跳板”,很顯然這段程式碼是有語法錯誤的,後面少了了一個“; ”。並且只是("~/Home") 的話對於IIS7以下的環境是無效的。當然在Preview3的模板中,在default.aspx.cs的Page_Load中已經加入了這個轉換,直接使用Preview3的模板建專案的話這個就不重要了,從Preview1/2上面升級過來的時候還要注意這裡的"~/Home"需要和前面的版本修改global.asax.cs一樣,如果不是使用IIS7,則需要在後面加一個自定義的副檔名,比如.mvc。
另外在這裡總結一下之前2個Preview版本的已發現的bug(或者不足之處)的現狀:
這些問題我依次發表在了使用微軟ASP.NET MVC Framework的一些感受 + 收集園子朋友發現的bug反饋 ,使用微軟ASP.NET MVC Framework的一些感受 + 收集園子朋友發現的bug反饋 【補充】 和MVC Toolkit 部分已發現bug的根治方案 Part(1)
1、第一篇說到的一些問題,目前還是多多少少存在,但這並不能說明都是MVC本身的問題,有些是.NET3.5的一些特性——比如Linq to SQL——在使用和“配合”上的一些問題。
2、第一篇、第二篇中提到的HtmlHelper中的很多擴充套件方法很亂的問題,這次在Preview3中是快刀斬亂麻,所有的size,maxLength之類的屬性都放到了htmlAttributs屬性中,倒也清爽,升級和使用的時候要多加註意了。
3、第三篇MVC Toolkit 部分已發現bug的根治方案 Part(1) 中談到的問題在Preview3貌似已經完美解決了 。
Pre3和Pre2的主要區別在Scott的Blog上面已經比較清楚地展示了,並且官方也提供了了一個升級文件:http://weblogs.asp.net/scottgu/archive/2008/05/27/asp-net-mvc-preview-3-release.aspx。
今天大概看了幾個關鍵的地方,目前發現了在ActionURL這個用法上面沒有太大變化的地方,但是在獲取上面反而有點小問題:
一、比如當你試圖在AdminController(對應的View)裡面輸出Url.Action("Foo")的時候,理想情況下應該是返回/Admin[.mvc]/Foo,但是不幸的事情發生了,當你在HomeController裡面新增一個Foo的Action,並且在global.asax.cs裡面新增了一條Home/Foo的URL規則之後(不新增不會有問題),你再用Url.Action("Foo")的時候,返回的將有可能是這樣:/Home[.mvc]/Foo,所以為了保證持久的可用性,在這種情況下我們必須放棄Url.Action("Foo")這種方式,轉而使用這樣的重寫方法:Url.Action("Foo","Admin")。不光是Url.Action是這樣,Html.ActionLink也存在著同樣的問題。我反覆在IIS/VS以及routes.MapRoute/routes.Add方式進行了測試,結果都是一樣的。這點是很噁心的,不知道是我這裡環境的問題還是大家的測試結果也這樣?歡迎大家反饋!
二、官方的升級文件上面有這麼一段話:
· dit the Default.aspx file and add the following line:
This redirect is not necessary for IIS 7. This is a workaround for an issue with how the Web server that is built into Visual Studio (the ASP.NET Development Server) works with routing.
大概意思是說找到Default.aspx 並且加入這段程式碼: 。在IIS7中是不需要這麼做的,為的是當你用VS測試或者IIS7以下的IIS時候需要用這個來做一個根目錄的“跳板”,很顯然這段程式碼是有語法錯誤的,後面少了了一個“; ”。並且只是("~/Home") 的話對於IIS7以下的環境是無效的。當然在Preview3的模板中,在default.aspx.cs的Page_Load中已經加入了這個轉換,直接使用Preview3的模板建專案的話這個就不重要了,從Preview1/2上面升級過來的時候還要注意這裡的"~/Home"需要和前面的版本修改global.asax.cs一樣,如果不是使用IIS7,則需要在後面加一個自定義的副檔名,比如.mvc。
另外在這裡總結一下之前2個Preview版本的已發現的bug(或者不足之處)的現狀:
這些問題我依次發表在了使用微軟ASP.NET MVC Framework的一些感受 + 收集園子朋友發現的bug反饋 ,使用微軟ASP.NET MVC Framework的一些感受 + 收集園子朋友發現的bug反饋 【補充】 和MVC Toolkit 部分已發現bug的根治方案 Part(1)
1、第一篇說到的一些問題,目前還是多多少少存在,但這並不能說明都是MVC本身的問題,有些是.NET3.5的一些特性——比如Linq to SQL——在使用和“配合”上的一些問題。
2、第一篇、第二篇中提到的HtmlHelper中的很多擴充套件方法很亂的問題,這次在Preview3中是快刀斬亂麻,所有的size,maxLength之類的屬性都放到了htmlAttributs屬性中,倒也清爽,升級和使用的時候要多加註意了。
3、第三篇MVC Toolkit 部分已發現bug的根治方案 Part(1) 中談到的問題在Preview3貌似已經完美解決了 。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-441850/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- to debug asp.net mvc4ASP.NETMVC
- ASP.NET MVC路由ASP.NETMVC路由
- ASP.NET MVC ModuleASP.NETMVC
- ASP.NET MVC TemplateASP.NETMVC
- ASP.NET MVC ErrorASP.NETMVCError
- ASP.NET MVC FilterASP.NETMVCFilter
- UpdatePanel for ASP.NET MVCASP.NETMVC
- 給ASP.NET MVC及WebApi新增路由優先順序ASP.NETMVCWebAPI路由
- ASP.NET MVC與ASP.NET WebFormASP.NETMVCWebORM
- [ASP.NET MVC 小牛之路]01 - 理解MVC模式ASP.NETMVC模式
- Asp.Net MVC HttpPost用法ASP.NETMVCHTTP
- ASP.NET MVC 反射例子ASP.NETMVC反射
- Asp.Net MVC 快取ASP.NETMVC快取
- Asp.Net MVC 使用 AjaxASP.NETMVC
- ASP.NET MVC ValidationASP.NETMVC
- ASP.NET MVC: Membership, OAuthASP.NETMVCOAuth
- ASP.NET MVC系列:AreaASP.NETMVC
- ASP.NET MVC系列:ModelASP.NETMVC
- AJAX Panels with ASP.NET MVCASP.NETMVC
- ASP.NET MVC 之 AJAXASP.NETMVC
- ASP.NET MVC和AJAXASP.NETMVC
- ASP.NET MVC 介紹ASP.NETMVC
- ASP.NET MVC 4使用PagedList.Mvc分頁ASP.NETMVC
- 【輝郎】ASP.NET MVC深度接觸:ASP.NET MVC請求生命週期ASP.NETMVC
- ASP.Net MVC過濾器ASP.NETMVC過濾器
- asp.net core mvc 分頁ASP.NETMVC
- ASP.NET MVC – 安全簡介ASP.NETMVC
- ASP.NET MVC – 模型簡介ASP.NETMVC模型
- ASP.NET MVC 使用 Datatables (1)ASP.NETMVC
- ASP.NET MVC 使用 Datatables (2)ASP.NETMVC
- Asp.net mvc 知多少(二)ASP.NETMVC
- Asp.net MVC – ControllerASP.NETMVCController
- Asp.Net MVC 捆綁(Bundle)ASP.NETMVC
- ASP.NET MVC TagBuilder使用ASP.NETMVCUI
- 筆記:ASP.NET MVC安全筆記ASP.NETMVC
- ASP.NET 4.5 MVC4.0ASP.NETMVC
- 【 Jeffrey Zhao】UpdatePanel for ASP.NET MVCASP.NETMVC
- ASP.NET MVC之初體驗ASP.NETMVC