如何将 ContentPlaceHolder 作为 ASP.NET MVC 母版页中 URL 的源

发布于 2024-09-10 15:23:01 字数 651 浏览 4 评论 0 原文

我有多个具有此模式的页面:

<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'

我上面有语法错误吗?

I have multiple pages that have this pattern:

<iframe frameborder ="0" src="[someURL]" width="100%" height="900">
</iframe>

I want to factor out everything but the URL into a master page so I tried this:

Master Page:

<iframe frameborder ="0" src=<asp:ContentPlaceHolder ID="Url" runat="server" /> width="100%" height="900">
</iframe>

Child Page:

<asp:Content ID="Content2" ContentPlaceHolderID="Url" runat="server">
    "http://myURL"
</asp:Content>

but it doesn't seem to work. I get this error:

Cannot find ContentPlaceHolder 'Url' in the master page

Do I have some syntax error above?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

你在我安 2024-09-17 15:23:01

听起来您想重新使用一个片段,以便视图可以指示 iFrame 的 URL 是什么,并且 Master 保存实际的 iFrame。

考虑这个潜在的解决方案:

URL 从控制器放入 ViewData。惯例是视图是愚蠢的。因此,您可以将此 iFrame 放入您的 Master 中:

这要求您的控制器知道或可以找到正在请求的视图的 URL。您可以在 Controller 方法中对此进行硬编码,或者从 web.config 中提取它。

It sounds like you want to re-use a snippet such that the View can dictate what the URL of the iFrame is, and the Master holds the actual iFrame.

Consider this potential solution:

The URL is put into ViewData from the Controller. Convention is that Views are dumb. So you could put this iFrame into your Master:

<iframe frameborder ="0" src="<%=ViewData["yourURL"] %>" width="100%" height="900"></iframe>

This requires that your Controller knows, or can find, the URL for the View that's being requested. You could hard-code this right in your Controller method, or pull it from the web.config.

○闲身 2024-09-17 15:23:01

我认为这不会很好地工作...您可以将 URL 传递到控制器内的 ViewData 中,然后注入吗?或者创建一些组件,根据当前 URL 从后端源中提取正确的值,或者其他什么?

HTH。

I don't think that will work very well... Could you pass along a URL into ViewData within the controller instead, and inject that? Or create some component that pulls the correct value from a backend source based on the current URL, or something?

HTH.

寂寞清仓 2024-09-17 15:23:01

有更好的方法将源代码放入元素中,但如果您需要坚持使用正在使用的实现,则可以这样做...

<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 不会喜欢你正在尝试做的事情,但它会起作用。

There are better ways of getting your source into the element but if you need to stick with the implementation you are using you can do this...

<iframe frameborder ="0" src="<asp:ContentPlaceHolder ID="UrlContent" runat="server" />" width="100%" height="900">
</iframe>

Notice that I have quotes before and after the content placeholder. Then you can just have content that looks like this...

<asp:Content ID="Content3" ContentPlaceHolderID="UrlContent" runat="server">
    http://www.stackoverflow.com
</asp:Content>

Intelisense will not like what you are trying to do but it will work.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文