2009-08-07 72 views
5

我對「內部」 asp.net應用程序的工作,並喜歡使用asp.net的MVC,但由於我們的應用程序部署到Web服務器不在我不能我們的控制,目前只有.net framework v2和IIS6。除了沒有時間/金錢花在轉換當前的WebForms應用程序上...通過asp.net MVC啓發更好的WebForms

所以任何信息幫助我創建更好的WebForms asp.net應用程序將不勝感激...我讀過「什麼吸引」關於來自MVC人的WebForms列表,肯定有解決方案/變通辦法,使WebForms「少sucky」...

東西,我理解,可以改善(但需要幫助):

  • 刪除視圖狀態爲不回發(去掉RUNAT = 「服務器」 標籤頁)
  • 最小化視圖狀態的使用 - 使用<span><asp:literal /></span>而不是一個asp:標籤(我們從來不使用服務器端控件的樣式屬性,但使用的CssClass主要歸因於保持CSS在CSS文件)
  • 爲Ajax請求使用ashx的處理程序(這可以進一步嗎?例如回發給處理程序?)
  • 可以查看狀態完全刪除,仍然回發? (是否讀取表單變量,而不是讀控制值?)
  • 您可以關閉ViewState的編程方式,如果你知道用戶擁有的JavaScript的?例如那麼一個Ajax請求可以提交表單,但如果JavaScript禁用,將工作?
  • 我們已經保持我們所有的業務邏輯在BR/BL層,我們必須對數據庫訪問了類似的DAL層...所以ASPX代碼背後,是通常相當輕...(驗證也是在BR/BL等等該響應Ajax請求或回傳的相同任務需要的代碼很少(或沒有)複製)
  • 使用較少的組件...(較少的服務器控件......在一定程度上,這也意味着使用贏得控制沒有廢話的ID)

我真的不喜歡整齊格式化的網址作爲其基於內部網的(幾乎不相關的),SEO是無關緊要的......即使MVC網址看起來輝煌...

再次,任何幫助,資源,代碼示例或任何將是很棒! 謝謝堆。

回答

1

對於ViewState的問題,請確保您瞭解的ViewState和了ControlState-之間的差異。 These articles幫助了我。我關閉了web.config中的ViewState以處理現有的Webforms應用程序,並且我沒有任何問題。我也避免任何*視圖控件,並堅持主要是PlaceHolder,Literal,Repeater,Button,TextBox,DropDownList(可以沒有ViewState奇怪的行爲,但沒有什麼showstopping)和其他基本控制。您可以關閉ViewState回發。

ASHX非常適合Ajax請求。儘管如此,我不會再採取任何措施。

我認爲你是在正確的軌道上。你已經將你的圖層分開,並將東西放在應該出現的位置,你似乎知道事情應該發生的地方,而知道的只是戰鬥的一半。

+0

閱讀那篇文章,並感覺所有的viewstate污染,我毫無疑問造成了狡猾...優秀的鏈接!此外,它澄清了viewstate沒有必要在回發期間獲取表格值(我現在知道的是一個神話) – davidsleeps 2009-08-07 01:47:18

3

爲Ajax請求

使用Jayrock處理Ajax請求可以添加到這個

使用ashx的處理程序。這非常像只有JsonResult的MVC。

您可以關閉視圖狀態 編程,如果你知道用戶 具有JavaScript的

如果使用此approach支持JS您可以檢測。因此很容易禁用ViewState。如果你有這樣的基礎頁面可以很容易地處理。所以重複代碼的數量 - > 0.

Additinaly你可以找到WebFormsMVP有幫助。

+0

是的,打算添加MVP。並不像MVC那麼好,但對於WebForms而言,它只是關於你所擁有的一切。 – Martin 2009-08-07 01:23:33

+0

MVP看起來很有用,但是:需要ASP.NET 3.5 SP1 – davidsleeps 2009-08-07 01:51:20