我打赌以前曾问过这个问题,但我找不到合适的搜索关键字。
我试图在HTML的中间调用我的变量(currentUser.FirstName),但如果我尝试它将无法识别变量。如果我不在代码中放置HTML标记,它确实有用。
这是我的代码:
<% var currentUser = ProjectGalaxy.Website.GetCurrentUser(); %>
<% if (currentUser != null)
{ %>
<ul class="nav navbar-nav navbar-right">
<li><a runat="server" href="~/pages/Dashboard.aspx">Welcome <%=
currentUser.FirstName %></a></li>
</ul>
<% } %>
谢谢你, 托马斯
答案 0 :(得分:1)
您在第一个服务器块中创建的变量&lt;%...%&gt;可能不再在范围内,因此当您退出第一个服务器块并正在编写html时,您将丢失上下文。
有几个选项取决于您是否仅限于在显示页面中解决此问题,或者是否能够同时编辑显示和代码。
选项1.删除变量并直接从服务器方法引用基础值。
有一个重复的调用,但它会删除任何作用域问题,并在您无法编辑后面的代码时保持本地化。
<% if (ProjectGalaxy.Website.GetCurrentUser() != null) {%>
<ul class="nav navbar-nav navbar-right">
<li><a runat="server" href="~/pages/Dashboard.aspx">Welcome <%:ProjectGalaxy.Website.GetCurrentUser().FirstName%></a></li>
</ul>
<%}%>
//后面的aspx.cs代码
protected bool CurrentUser
{
get { return ProjectGalaxy.Website.GetCurrentUser(); }
}
// aspx显示页面
<% if (CurrentUser != null) {%>
<ul class="nav navbar-nav navbar-right">
<li><a runat="server" href="~/pages/Dashboard.aspx">Welcome <%:CurrentUser.FirstName%></a></li>
</ul>
<%}%>
//后面的aspx.cs代码
pnlWelcomeMessage.Visible = true; // during page load if condition is true
// aspx显示页面
<asp:Panel ID="pnlWelcomeMessage" runat="server" CssClass="nav navbar-nav navbar-right" Visible="false">
<ul class="nav navbar-nav navbar-right">
<li><a runat="server" href="~/pages/Dashboard.aspx">Welcome <%:ProjectGalaxy.Website.GetCurrentUser().FirstName%></a></li>
</ul>
</asp:Panel>
希望它有所帮助。