Вставить ContentPlaceHolder между двойными кавычками
-
03-07-2019 - |
Вопрос
Я использую .NET MVC, и на страницах просмотра я установил заполнитель содержимого, который содержит идентификатор, который будет использоваться на главной странице, следующим образом:
Просмотр страницы:
<asp:Content ID="CDomBodyId" ContentPlaceHolderID="DomBodyId" runat="server">LmpDemoRequests</asp:Content>
Главная страница:
<body id='<asp:ContentPlaceHolder ID="DomBodyId" runat="server"></asp:ContentPlaceHolder>'>
Таким образом, в данном конкретном случае тег body будет выглядеть следующим образом на конечной HTML-странице:
<body id='LmpDemoRequests'>
Я хотел бы иметь двойные кавычки вокруг тега body id, но инвертирование кавычек, подобных приведенным ниже, делает intellisense неспособным найти заполнитель содержимого, давая мне много предупреждений при компиляции.
<body id="<asp:ContentPlaceHolder ID='DomBodyId' runat='server'></asp:ContentPlaceHolder>">
Есть ли способ обойти это?
Решение
Попробуйте объявить BodyID как свойство вашей MasterPage. Установите его значение на странице просмотра. Тогда вы можете сделать что-то вроде
<html>
<body='<%= BodyID %>'>
</body
</html>
Р>
Другие советы
Это проблема редактора ASP.NET. Это не специфично для MVC. Я думаю, что обходной путь довольно хорош, и я не вижу определенного недостатка.
Не уверен, что я неправильно понял ваш вопрос, но вы также можете добавить:
<body id="site" runat="server"></body>
А затем получите доступ к нему на своей странице
HtmlControl body = (HtmlControl)Master.FindControl("site");
body.Attributes.Add("class", "LmpDemoRequests");
Надеюсь, я вас правильно понял.