ASP.NET MVC Preview3 bug 及期望

iDotNetSpace發表於2008-09-04
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貌似已經完美解決了 。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-441850/,如需轉載,請註明出處,否則將追究法律責任。

相關文章