[英]ASP.NET MVC and Response.Write in a master page
我的ASP.NET MVC項目母版頁中有以下代碼:
<%
switch(Request.Browser.Browser)
{
case "IE": // Internet Explorer
Response.Write("<link href=\"./Content/Site_IE.css\" rel=\"stylesheet\" type=\"text/css\" />");
break;
case "AppleMAC-Safari": // Chrome
Response.Write("<link href=\"./Content/Site_FF.css\" rel=\"stylesheet\" type=\"text/css\" />");
break;
case "Firefox": // Firefox
Response.Write("<link href=\"./Content/Site_FF.css\" rel=\"stylesheet\" type=\"text/css\" />");
break;
default: // All others
Response.Write("<link href=\"./Content/Site_FF.css\" rel=\"stylesheet\" type=\"text/css\" />");
break;
}
%>
當我直接嵌入時:
<link href="../../Content/Site.css" rel="stylesheet" type="text/css" />
然后它可以工作,但是當我嵌入switch語句時,它不會從視圖中找到位置,而是在開始頁面上找到它。
如何映射路徑,以便從任何地方找到它?
嘗試這個:
<%
switch(Request.Browser.Browser)
{
case "IE": %> // Internet Explorer
<link href="<%= Url.Content ("~/Content/Site_IE.css") %>" rel="stylesheet" type="text"/css" />
<% break;
case "AppleMAC-Safari": %> // Chrome
<link href="<%= Url.Content ("~/Content/Site_FF.css") %>" rel="stylesheet" type="text"/css" />
<% break;
case "Firefox": %> // Firefox
<link href="<%= Url.Content ("~/Content/Site_FF.css") %>" rel="stylesheet" type="text"/css" />
<% break;
default: %> // All others
<link href="<%= Url.Content ("~/Content/Site_FF.css") %>" rel="stylesheet" type="text"/css" />
<% break;
}
%>
我想我寧願看到在控制器中做出的決定以及將樣式表作為模型屬性傳入。 您可以輕松地對其進行測試,並且標記會干凈很多。
我發現了這個:
Response.Write("<link href=\""+Page.ResolveClientUrl("~/Content/Site_IE.css")+"\" rel=\"stylesheet\" type=\"text/css\" />");
“ ./”表示“來自當前目錄”。 只需使用相對於應用程序根目錄的路徑即可,僅以斜杠開頭。
Response.Write("<link href=\"/Content/Site_FF.css\" ...
是的,剛開始時很痛苦。 我寫了一篇有關如何解決此問題的博客文章,甚至為您可以從我的網站上滑動的輔助方法提供了一些代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.