asp.net開發與web標準的衝突問題的一些常見解決方案

來源:互聯網
上載者:User

論壇中也經常有從事.net開發的新手朋友問一些asp.net開發過程中與web標準之間的衝突問題,其實說到底就是產生用戶端程式碼的問題。更高深的開發層面的東西我也說不出來,從頁面前端的角度和大家分享一下建議:

少用asp.net中的伺服器端控制項

在Visual Studio中,有一系列強大的控制項,讓我們的剛開始學習.net開發人員愛不釋手。但vs中的這些控制項,大多都是基於winForm的那種模式搬來的,在網頁開發上,有些控制項還是少用為佳,比如:

  • 不要什麼也沒都統統加form runat="server",有朋友說,不加form runat="server"其他控制項很多就不可以用了。是的,我們就是要在必要的地方加,確實是有表單的地方,自然要加,但絕對不是.net預設的那種,所有頁面都在body標籤下第一個標籤就是form。這是不合理的。
  • 少用Asp:Gridview這樣的控制項,可考慮asp:Repeater控制項或者自己去寫第三方控制項,反正很簡單,讓代碼輸出聽你的。
  • 用asp:Literal替換asp:Label,asp:Literal輸出是乾淨的。
  • 少用asp:LinkButton這樣的控制項,連結就是連結,按鈕就是按鈕,沒必要搞一個什麼LinkButton……
  • 預設的表單驗證控制項雖然用起來簡單,但還是自己寫的比較好用。
  • 總之,我們要注重代碼輸出的品質,而預設的控制項有些是達不到這個要求的。

少用Frameset/Iframe標籤

在一般網頁中用架構頁來布局(Header/Sidebar/Content/Footer)的做法基本上已經淘汰了,當然,後台管理這類的應用還是可以用的,前端展現的頁面就不可以了,Visual Studio 2005中開始,就有了MasterPage,這個用起來也非常方便。其實和早期asp中include header.asp這樣的做法是相似的。

少用PostBack機制

.net中的postback機制,有它的理由,合理使用吧,互連網產品中少用點沒錯!

多看成熟的.net開源產品

比如:微軟開源的oXite、PetShop、Discuz論壇的.net版、BlogEngine、CVBBS等等,都是基於.net開發的比較好的例子。

多關注用戶端代碼品質

畢竟是基於瀏覽器的,使用者體驗、W3C標準、瀏覽器安全色等等,沒有好的用戶端代碼,都是支撐不起來的。

多學習必要的用戶端知識

很多.net初學者對html/css/javascript這些用戶端基本知識瞭解得不夠,特別是javascript,你會發現很多以前你都Postback到伺服器端去做的事情,原來用javascript就可以輕鬆地在用戶端去完成了!Web開發,這是根基!

前幾天看了下oXite,順便裝上了asp.net MVC Beat,我也不是.net的鐵杆粉絲,但是也就沒有留意,今天抽空建立了一個MvcApplication樣本項目大致地瞭解了一下,看到了我所希望看到的幾個亮點:

  • 代碼產生的非常乾淨,這點很重要。
  • 不使用現有的將互動返回伺服器的postback模型,也就是說在基於MVC的視圖內沒有viewstate或page的生命週期之說。
  • 它包括一個非常強大的URL映射組件,允許你使用非常乾淨的URL來建造應用。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.