使用 URL Rewrite 技術時,ASP.NET 的 `
ASP.NET 2.0 引入 Control Adapter 架構,允許在不繼承控制項的前提下,攔截並修改其渲染行為。利用 `App_Browsers` 目錄下的 `.browser` 定義檔,即可針對特定控制項(如 `HtmlForm`)指定自訂 Adapter,完美解決 Action 屬性問題。
在網站根目錄建立 `App_Browsers` 資料夾,新增 `RewriteForm.browser`:
<browsers> <browser refID="Default"> <controlAdapters> <adapter controlType="System.Web.UI.HtmlControls.HtmlForm" adapterType="Kuang.HtmlFormAdapter" /> </controlAdapters> </browser> </browsers>
`refID="Default"` 表示擴展系統預設的瀏覽器定義(位於 `%windir%\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers\Default.browser`)。
using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.Adapters; namespace Kuang { public class HtmlFormAdapter : ControlAdapter { protected override void Render(HtmlTextWriter writer) { HtmlForm form = (HtmlForm)Control; // 取得重寫後的 URL string rawUrl = HttpContext.Current.Request.RawUrl; // 若為回發,保留原始 Action;否則使用重寫後的 URL if (!string.IsNullOrEmpty(rawUrl) && !Page.IsPostBack) { form.Action = rawUrl; } base.Render(writer); } } }
需 .NET Framework 2.0 或以上版本支援。
HTTP 無狀態特性導致頁面間資料傳遞需顯式管理。狀態儲存位
ASP.NET MVC 4 內建的 Bundling & M
資料庫遷移 確保使用自定義資料庫(非自動產生 ASPNETD
範本控件開發比組合控件更簡單,核心在於繼承 Composit