ASP.NET MVC 4和Razor 2:View引擎不再支持xml?
|
我们有一个视图(.cshtml),它使用ASP.NET MVC 3为RSS提要呈现 XML,工作正常.现在我们已经使用Razor 2升级到ASP.NET MVC 4,它会产生编译错误,类似于下面的内容. Parser Error Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately. Parser Error Message: Encountered end tag "item" with no matching start tag. Are your start/end tags properly balanced? 标签是适当平衡的. 有人有什么想法? 更新:我已将它隔离在@foreach(…){…}块中item元素内的link元素下. @foreach (var item in Model.Items)
{
<item>
<title>@item.Title</title>
<link>@item.Link</link>
<description>@item.Description</description>
<guid>@item.Guid</guid>
@if (item.PublishedDateUtc.HasValue)
{
<pubDate>@item.PublishedDateUtc.Value.ToString("ddd,dd MMM yyyy HH:mm:ss") GMT</pubDate>
}
</item>
}
我通过使用下面的@ Html.Raw来修复它. @foreach (var item in Model.Items)
{
<item>
<title>@item.Title</title>
@Html.Raw(string.Format("<link>{0}</link>",item.Link.ToHtmlEncoded()))
<description>@item.Description</description>
<guid>@item.Guid</guid>
@if (item.PublishedDateUtc.HasValue)
{
<pubDate>@item.PublishedDateUtc.Value.ToString("ddd,dd MMM yyyy HH:mm:ss") GMT</pubDate>
}
</item>
}
有谁有更好的建议?显然,我可以使用一个类来声明模型并直接从控制器返回XML,但我更感兴趣的是为什么会出现这种行为以及我能做些什么来更好地符合Razor语法. 解决方法当我第一眼看到这个时,我注意到你的链接标签有一个结束标签而不是自动关闭. Razor非常聪明,可以知道html并知道链接标记是如何关闭的.这是另一个可以打破以显示Razor如何读取html的例子.....
<tbody>
@if (alternating) {
<tr class='alternating'>
} else {
<tr>
}
....
</tr>
</tbody>
这将失败,因为它看到< / tr>没有开口标签. Razor将自动关闭的标签解释为自动关闭.所以你的链接标签实际上以>结束了. (因为它是有效的html,有一个没有/>的自闭标签)所以现在我们遇到一个没有开始标记的结束标记来证明它是合理的,所以解析器放弃并说它没有正确格式化.我必须做一些检查,但我很确定它假设关闭链接标记用于item标记,因为这将提供适当的平衡,这就是为什么文件的其余部分解析好直到它遇到这个单独的项目标记没有开口标签. 应该足够聪明地知道前一个结束标记不是正确的标记.与团队合作可能是一个问题. 我没有尝试过,但你应该能够做到这一点 @foreach (var item in Model.Items)
{
<item>
<title>@item.Title</title>
@:<link>
@item.Link
@:</link>
<description>@item.Description</description>
<guid>@item.Guid</guid>
@if (item.PublishedDateUtc.HasValue)
{
<pubDate>@item.PublishedDateUtc.Value.ToString("ddd,dd MMM yyyy HH:mm:ss") GMT</pubDate>
}
</item>
} (编辑:南阳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net核心 – 如何排除在ASP.NET Core中发布文件?
- asp.net-mvc-4 – 表单身份验证:角色(MVC 4)C#
- asp.net – 从单独的配置文件中读取设置
- asp.net-mvc – 应用程序服务层作为静态类
- asp.net 根据汉字的拼音首字母搜索数据库(附 LINQ 调用方法
- ASP.NET缓存的方法和最佳实践
- .net – CS0012:类型’System.Data.Linq.DataContext’在未
- ASP.NET core Web中使用appsettings.json配置文件的方法
- asp.net-mvc – 如何使用带有IEnumerable的Html.CheckBox(l
- asp.net-mvc – 有条件地在webgrid中显示图像 – mvc 3
- 在asp.net中HttpContext.Current.User和Thread.C
- 在ASP.NET MVC中动态地从数据库生成CSS文件
- 增加ASP.NET站点的executionTimeout和maxRequest
- asp.net – Azure可以运行WPF吗?
- asp.net core标签助手的高级用法TagHelper+Form
- asp.net – Javascript日期本地化
- asp.net – 是否可以根据用户角色隐藏/显示Kendo
- asp.net-mvc – 如何在我自己的自定义助手中使用
- asp.net-mvc – Nhibernate / MVC:在View中处理
- asp.net – 在为app_offline.htm提供特定URL时,将
