ASP.NET MVC2母版页 - 服务器端脚本无法呈现,第一个括号被转义

时间:2010-09-11 02:05:53

标签: asp.net-mvc asp.net-mvc-2 master-pages

我有一个母版页,我用它作为模板,允许我每页定义元标记。我的主页面包含一个包含元信息的模型,这里是我尝试执行以下操作的示例:

<meta name="description" content="<%= Model.description %>" />
<meta name="keywords" content="<%= Model.keywords %>" />

但是,当我在呈现页面时检查HTML时,我得到了这个:

<meta name="description" content="&lt;= Model.description %>" />
<meta name="keywords" content="&lt;= Model.keywords %>" />

如果我从内容中删除外部引号,例如content=<%= Model.description %>它呈现数据。它似乎不喜欢周围的引号。

这是母版的错误吗?如果是这样,那么最好的替代解决方法是什么?如果没有,我做错了什么?

2 个答案:

答案 0 :(得分:5)

之前我已经看过,这是一种痛苦。可能你的head标签中有一个runat =“sever”属性,如下所示:

<head runat="server">

如果你刚刚做到了:

<head>

然后你不应该看到这种行为。

答案 1 :(得分:2)

这一直是个问题,因为它试图对属性中的内容进行编码。你可以通过这样做来解决这个问题:

<%= string.Format("<meta name=\"description\" content=\"{0}\" />", Model.description) %> 
<%= string.Format("<meta name=\"keywords\" content=\"{0}\" />", Model.keywords) %> 

编辑:这不是特定于MasterPages的问题。我在很久以前发布了一个类似的问题,在SO上询问它,如果你阅读了接受的答案,你可以看到该框架具有head标签中各种项目的特定代码,它将具有稍微不同的渲染格式并将编码数据。

ASP.NET Webform css link getting mangled