我有一個託管Web窗體和MVC的Visual Studio解決方案。我最近將解決方案中的所有項目文件都升級到MVC 5.由於在MVC 5中如何處理表單標記的action屬性(default.aspx頁面返回一個空字符串,因此它將打破名爲「default.aspx」的頁面的所有回發行動和回發失敗)。 See this article和this forum question。MVC 5 Upgrade Breaks Default.aspx頁面回傳
我的問題是,我有多個MVC視圖路由到以「/」或單詞結尾的URL。例如「mysite.com/about/」或「mysite.com/about」。我不能使用解決方案answered here,因爲它也會影響MVC路由(我試過並且MVC視圖不呈現)。我發現的唯一的解決方案,它的工作原理是手動去到每一個Default.aspx頁面,並使用此代碼:
protected void Page_Init(object sender, EventArgs e)
{
((HtmlForm)((MyMasterPage)Page.Master)FindControl("form1")).Action = "Default.aspx";
}
請注意,我不能設置action屬性在母版頁,因爲它會影響到所有非默認。 aspx頁面。
沒有任何的多了去了,我現在有兩個選擇:
- 走進每個Default.aspx頁面,並手動設置action屬性。
- 創建一個父頁面,手動設置動作屬性,並使每個default.aspx頁面繼承它。
這些解決方案並不理想。我注意到如果我創建一個新的ASP.NET Web應用程序項目並使用Web窗體模板,則default.aspx頁面沒有問題。
我還能做些什麼來解決這個空行爲屬性的問題?
...等等,你使用MVC與WebForms事件? ... –
a)爲什麼不能檢查Action是否爲空,如果爲空則將其設置爲默認值,那麼它不會影響非默認操作...或者b)使用控制適配器您鏈接到的解決方案,這也不會影響非默認頁面,因爲Action不會爲空? –
我沒有在Web窗體事件中使用MVC。微軟正在推廣一個ASP.NET,這意味着你可以使用Web窗體,MVC或兩者。在我的情況下,我繼承了一箇舊的Web Forms項目,並希望使用MVC,所以除了現有的Web窗體外,我還添加了所有必需的東西來使用MVC。 – Halcyon