1

我有一个名为 LogOnUserControl 的部分视图/用户控件,它显示在我网站的侧栏中(在 Site.Master 中定义)。我还有一个单独的 LogOn 视图,它也呈现 LogOnUserControl。

我不希望 LogOn 视图中有两个 LogOnUserControl 实例,因为这很容易混淆,所以我目前的想法是包含一个条件,例如

// Semi-pseudocode
if (!Request.IsAuthenticated) && View.Name != "LogOn")

在 LogOnUserControl 中。

这感觉不对,因为局部视图现在知道 LogOn 视图。另外,我不知道如何获取视图的名称,这强化了我做错了什么的感觉!:-)

编辑: Site.Master 中的 LogOn 视图和侧边栏都使用相同的局部视图,这更加复杂。

4

3 回答 3

5

您是否考虑过在侧边栏中没有登录部分的情况下为您的登录视图使用不同的母版页?如果您担心 html 标记的重复,您可以使用嵌套母版页来避免该问题。

于 2009-04-24T22:40:56.297 回答
3

在母版页上,用内容区域标签包装侧边栏区域的内容,并给它一个像 SideBarContentArea 之类的 id。这样做是创建一个新的内容区域,您可以选择在基于主页面的页面上覆盖它,并指定当您未在子页面上实现时将显示的默认内容。现在在登录页面上,您所要做的就是覆盖 SideBarContentArea 并且这次不包括登录控件。

八大兵!

于 2009-04-25T03:13:10.590 回答
2

您可以在 ViewData 中存储一个标志来指示这一点。无论您是想对其进行强类型还是直接访问它都取决于您。所以在你的母版页上你可以有这个:

<% if (ViewData["HideLogOnUserControl"] == "Y") { %>
    Insert HTML here
<% } else { %>
    Insert HTML here
<% } %>
于 2009-04-24T23:59:12.677 回答