每次处理Site.Master视图时,我都想在我的css链接的路径上添加一些变量。这样做的正确方法是什么?我的代码目前打破了Default.aspx,说我还没有定义cssLink。 Site.Master代码如下:
<script runat="server">
void Page_Load(object sender, EventArgs e)
{
string cssLoc = "../../Content/css/expect.css?t=" + DateTime.Now.Ticks.ToString();
string cssLink = String.Format(@"<link rel=""stylesheet"" type=""text/css"" href=""{0}"" />", cssLoc);
}
</script>
<!DOCTYPE html>
<html>
<head id="Head1" runat="server">
<asp:ContentPlaceHolder ID="head" runat="server">
<title></title>
</asp:ContentPlaceHolder>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<%= cssLink %>
<script type="text/javascript" src="../../Scripts/jquery.js"></script>
</head>
另外,无论如何要解决“XHTML过渡,标题发生次数太少”的消息吗?
更新
请忽略范围问题。见理查德的回答。但我应该注意到,解决这个问题并不能解决问题
我认为因为Inherits =“System.Web.Mvc.ViewMasterPage”声明了整个
<{1}}阻止无法处理。
答案 0 :(得分:5)
只需像您通常那样定义您的css链接并添加一些内联处理。您正试图在MVC视图中执行Page_Load,这不是一个可行的解决方案...
<link href="../../Content/css/expect.css?t=<%=DateTime.Now()%>" type="text/css" rel="Stylesheet" />
答案 1 :(得分:2)
您已在Page_Load中将cssLink声明为本地变量。因此,它将不适用于您的页面。
这应该可以解决您的问题:
<script runat="server">
private string cssLoc;
private string cssLink;
void Page_Load(object sender, EventArgs e)
{
cssLoc = "../../Content/css/expect.css?t=" + DateTime.Now.Ticks.ToString();
cssLink = String.Format(@"<link rel=""stylesheet"" type=""text/css"" href=""{0}"" />", cssLoc);
}
</script>
<!DOCTYPE html>
<html>
<head id="Head1" runat="server">
<asp:ContentPlaceHolder ID="head" runat="server">
<title></title>
</asp:ContentPlaceHolder>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<%= cssLink %>
<script type="text/javascript" src="../../Scripts/jquery.js"></script>
</head>
编辑:除了回答您的直接问题之外,我还建议您找一个更适合MVC的解决方案(而不是将代码放在您的母版页中)。例如,你可以将css位置包含为ViewData [“样式表”]或使用不同的机制来更新css(我在MVC的RC上不是最新的)
答案 2 :(得分:2)
<head runat="server">
<title>Some Title</title> -- WILL FIX YOUR ISSUE
...
<%= Helper.CustomStyle() %>
...
</head>
这个Helper.CustomStyle的内部逻辑会根据如上所示的DateTime.Now调用而变化。
可以在此处找到一个非常好的教程,帮助您了解自定义助手:http://www.asp.net/learn/mvc/tutorial-09-cs.aspx
请记住 - ASP.NET MVC取消了Page_Load类型的调用。这是一种独特的设计模式!
答案 3 :(得分:2)
考虑编写一个帮助程序来链接该CSS文件。
public static string DatedStylesheet(this HtmlHelper Html, string url, DateTime date)
{
UrlHelper Url = new UrlHelper(new RequestContext(Html.ViewContext.HttpContext, Html.ViewContext.RouteData));
string html = "<link type=\"text/css\" rel=\"stylesheet\" href=\"{0}?t={1}\"/>";
return string.Format(html, Url.Content(url), date.Ticks.ToString());
}
<%= Html.DatedStylesheet("~/Content/css/expect.css", DateTime.Now);
在一个不相关的说明中,有没有人知道在视图页面之外使用UrlHelper的更简洁方法?