更新
请忽略这个问题,我完全被误解了,这个问题与我认为的无关,而是因为 Composite 将它从函数呈现的所有 html 视为 XML,因此你必须逃避某些字符(这里有一个方便的参考: http: //www.faqs.org/docs/htmltut/characterentities_famsupp_69.html)。在我的情况下,我不得不替换&
为&
.
希望此信息对其他人有所帮助。
另外,这里有一篇关于如何转义字符串的好文章:String escape into XML
我的老误解的问题:
我有一个无法通过 Composite 的 MvcPlayer 函数呈现的视图。通过消除过程,我能够将其追踪到视图中的以下行:
Url.Action("Action", "Controller", new { Page = 123, PageSize = 180 });
然后我更进一步发现,如果我将其更改为以下内容:
Url.Action("Action", "Controller", new { PageSize = 180 });
然后页面呈现没有问题。
我检查了复合错误日志,其中指出:
System.Xml.XmlException: '=' is an unexpected token. The expected token is ';'. Line 81, position 63.
at System.Xml.XmlTextReaderImpl.Throw(Exception e)
at System.Xml.XmlTextReaderImpl.Throw(String res, String[] args)
at System.Xml.XmlTextReaderImpl.ThrowUnexpectedToken(String expectedToken1, String expectedToken2)
at System.Xml.XmlTextReaderImpl.ThrowUnexpectedToken(Int32 pos, String expectedToken1, String expectedToken2)
at System.Xml.XmlTextReaderImpl.ThrowUnexpectedToken(Int32 pos, String expectedToken)
at System.Xml.XmlTextReaderImpl.HandleEntityReference(Boolean isInAttributeValue, EntityExpandType expandType, Int32& charRefEndPos)
at System.Xml.XmlTextReaderImpl.ParseAttributeValueSlow(Int32 curPos, Char quoteChar, NodeData attr)
at System.Xml.XmlTextReaderImpl.ParseAttributes()
at System.Xml.XmlTextReaderImpl.ParseElement()
at System.Xml.XmlTextReaderImpl.ParseElementContent()
at System.Xml.XmlTextReaderImpl.Read()
at System.Xml.Linq.XContainer.ReadContentFrom(XmlReader r)
at System.Xml.Linq.XContainer.ReadContentFrom(XmlReader r, LoadOptions o)
at System.Xml.Linq.XDocument.Load(XmlReader reader, LoadOptions options)
at System.Xml.Linq.XDocument.Parse(String text, LoadOptions options)
at System.Xml.Linq.XDocument.Parse(String text)
at Composite.AspNet.MvcPlayer.Functions.RenderInternal(String path) in c:\***************\MvcPlayer\Player.cs:line 125
我知道在 Composite 中,您可以像这样引用系统内的页面:
<a href="/page(@aPage.Data.Id)">Page</a>
我的 Url.Action 的输出是 /Controller/Action?Page=123&Page=180
所以我假设复合从动作中获取 URL 结果的“?Page = 123”部分,然后尝试将其作为复合页面引用处理,当然不是。
有谁知道我该如何解决这个问题?