Как вставить ContentPlaceHolder в качестве источника URL на главной странице в ASP.NET MVC - PullRequest
0 голосов
/ 19 июля 2010

У меня есть несколько страниц с этим шаблоном:

<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' на главной странице

Есть ли у меня какая-то синтаксическая ошибка выше?

Ответы [ 3 ]

1 голос
/ 19 июля 2010

Не думаю, что это будет работать очень хорошо ... Не могли бы вы вместо этого передать URL в ViewData внутри контроллера и вставить это?Или создайте какой-нибудь компонент, который извлекает правильное значение из внутреннего источника на основе текущего URL, или что-то еще?

HTH.

1 голос
/ 19 июля 2010

Звучит так, как будто вы хотите повторно использовать фрагмент, чтобы представление могло определять URL-адрес iFrame, а мастер содержал реальный iFrame.

Рассмотрим это потенциальное решение:

URL-адрес помещается в ViewData из контроллера.Считается, что взгляды глупы.Таким образом, вы можете поместить этот iFrame в свой мастер:

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

Для этого требуется, чтобы ваш контроллер знал или мог найти URL запрашиваемого представления.Вы можете жестко закодировать это прямо в вашем методе Controller или извлечь его из web.config.

0 голосов
/ 19 июля 2010

Есть лучшие способы получить ваш источник в элементе, но если вам нужно придерживаться используемой реализации, вы можете сделать это ...

<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 не понравится то, что вы пытаетесь сделать, но оно будет работать.

...