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 Core 中的框架级依赖注入
- asp.net – Session Timeout .NET
- asp-classic – 经典的asp / asp.net网站 – global.asa无效
- asp.net-mvc – 找到相同类型的两个实体之间的差异
- asp.net – Request.Url.AbsoluteUri和重写的URL
- asp.net-mvc – DDD原理和ASP.NET MVC项目设计
- asp.net-mvc – MVC 5具有身份验证模式的外部身份验证=表单
- 从ASP.NET应用程序使用Active Directory时,DirectoryServic
- .net – ELMAH对企业库异常处理块
- asp.net – 在MVC 4.0中使用部分视图中的节
- asp.net-mvc – 无法在Web服务器上启动调试. Web
- asp.net – 共享.NET应用程序池
- asp.net-mvc – 如何使用Visual Studio 2013和En
- asp.net-mvc – 如何在ASP.NET MVC4中使用具有唯
- asp.net-mvc – 尝试创建类型为’TypeNewsContro
- ASP.NET代码隐藏中的当前工作目录 – 我们可以依
- asp.net – “2015年4月20日Google帐户的OpenID2
- 在IIS / ASP.Net中的.NET 1.1应用程序中创建.NET
- asp.net-mvc-4 – 在哪里可以找到WebMatrix.WebD
- 扩展ASP.NET数据缓存以在Web场之间共享