我有多个具有此模式的页面:
<iframe frameborder ="0" src="[someURL]" width="100%" height="900">
</iframe>
我想把除了URL之外的所有内容都分解成母版页,所以我尝试了这个:
母版页
<iframe frameborder ="0" src=<asp:ContentPlaceHolder ID="Url" runat="server" /> width="100%" height="900">
</iframe>
儿童页面
<asp:Content ID="Content2" ContentPlaceHolderID="Url" runat="server">
"http://myURL"
</asp:Content>
但它似乎不起作用。我收到这个错误:
在母版页中找不到ContentPlaceHolder'Url'
我上面有一些语法错误吗?
答案 0 :(得分:1)
听起来你想重新使用一个片段,以便View可以指示iFrame的URL是什么,并且Master拥有实际的iFrame。
考虑这个潜在的解决方案:
将URL从Controller放入ViewData。公约是观点是愚蠢的。所以你可以把这个iFrame放到你的主人身上:
<iframe frameborder ="0" src="<%=ViewData["yourURL"] %>" width="100%" height="900"></iframe>
这要求您的Controller知道或可以找到所请求的View的URL。您可以在Controller方法中对此进行硬编码,或者从web.config中提取它。
答案 1 :(得分:1)
我认为这不会很好用......你可以将一个URL传递给控制器内的ViewData,然后注入吗?或者创建一些组件,根据当前URL或其他内容从后端源中提取正确的值?
HTH。
答案 2 :(得分:0)
有更好的方法可以将您的源码放入元素中,但如果您需要坚持使用您正在使用的实现,您可以这样做...
<iframe frameborder ="0" src="<asp:ContentPlaceHolder ID="UrlContent" runat="server" />" width="100%" height="900">
</iframe>
请注意,我在内容占位符之前和之后都有引号。然后你可以拥有看起来像这样的内容......
<asp:Content ID="Content3" ContentPlaceHolderID="UrlContent" runat="server">
http://www.stackoverflow.com
</asp:Content>
Intelisense不会喜欢你想做的事情,但它会起作用。