TheBeerHouse 系列三:从表示层开始上
~~刚完成一个小功能所以透透气我先说说WebPar:
下图是TheBeerHouse模板页的头部~~每个页必须有一个WebPartManager~~大家都知道了吧~~
我们来看看aspx~~上图就是反映下面代码的,作用就是切换WebPar的当前的模式,以及应用范围,不过~~
安全验证被WebPar管理了.,......
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="PersonalizationManager.ascx.cs" Inherits="MB.TheBeerHouse.UI.Controls.PersonalizationManager" %>
<div style="text-align: right;">
<asp:WebPartManager ID="WebPartManager1" runat="server" />
<asp:LinkButton ID="btnBrowseView" runat="server" OnClick="btnBrowseView_Click" meta:resourcekey="btnBrowseViewResource1">Browse View</asp:LinkButton> |
<asp:LinkButton ID="btnDesignView" runat="server" OnClick="btnDesignView_Click" meta:resourcekey="btnDesignViewResource1">Design View</asp:LinkButton> |
<asp:LinkButton ID="btnEditView" runat="server" OnClick="btnEditView_Click" meta:resourcekey="btnEditViewResource1">Edit View</asp:LinkButton> |
<asp:LinkButton ID="btnCatalogView" runat="server" OnClick="btnCatalogView_Click" meta:resourcekey="btnCatalogViewResource1">Catalog View</asp:LinkButton>
<asp:Label runat="server" ID="panPersonalizationModeToggle">
|
<asp:LinkButton ID="btnPersonalizationModeToggle" runat="server" OnClick="btnPersonalizationModeToggle_Click" meta:resourcekey="btnPersonalizationModeToggleResource1">Switch Scope (current = {0})</asp:LinkButton>
</asp:Label>
</div>
//--细心的朋友可能发现了
meta:resourcekey="btnPersonalizationModeToggleResource1">是从Controls\App_LocalResources中取全球化设置用的App_LocalResources的主目录的设置可以应用于所有的目录,而Controls的设置应用于该自目录
有的朋友可能要问~~权限怎么办~~这样做不是全都能修改了么?别着急~~继续往下看:~~首先恶补点知识阿~~
1这是 WebPar:的流量模式
PersonalizationManager.ascx-是进入主页的时候切换编辑网上的WebPar模式的管理页浏览模式,
DesignDisplayMode(设计模式)。在设计模式中,会显示各区域的用户界面 (UI),然后用户可以拖动控件来更改布局。
EditDisplayMode 显示特殊的编辑 UI 元素并使最终用户能够在页面上编辑控件
CatalogDisplayMode 显示特殊的目录 UI 元素并使最终用户能够添加和移除页面控件。
ConnectDisplayMode 显示特殊的连接 UI 元素并使最终用户能够连接 Web 部件控件。
2.因为浏览模式和设计模式始终是受支持的。可能发生变化的显示模式是编辑、目录和连接模式。这些显示模式中,每一个都与特定类型的 ToolZone 控件相关联。正是网页上存在这种特定类型的区域,特定显示模式才会添加到,所以要确定显示模式。
对应于页上存在的区域控件类型,SupportedDisplayModes 属性只包含页上实际可用的显示模式。
3.关于权限 panPersonalizationModeToggle.Visible = WebPartManager1.Personalization.CanEnterSharedScope;当有admin权限的时候修改是关于全部人的。否则是自己哦
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using MB.TheBeerHouse;
using MB.TheBeerHouse.BLL.Polls;
namespace MB.TheBeerHouse.UI.Controls
{
public partial class PersonalizationManager : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
UpdateUI();
}
protected void UpdateUI()
{
//---------------------------WebPartManager1.SupportedDisplayModes.Contains(WebPartManager.BrowseDisplayMode)通过查找确定某种模式是否可用
//---如果可以用则Link-- btnBrowseView.Enabled=true
btnBrowseView.Enabled = WebPartManager1.SupportedDisplayModes.Contains(WebPartManager.BrowseDisplayMode);
btnDesignView.Enabled = WebPartManager1.SupportedDisplayModes.Contains(WebPartManager.DesignDisplayMode);
btnEditView.Enabled = WebPartManager1.SupportedDisplayModes.Contains(WebPartManager.EditDisplayMode);
btnCatalogView.Visible = WebPartManager1.SupportedDisplayModes.Contains(WebPartManager.CatalogDisplayMode);
//看看用户是否有权限显示-管理员的用的按钮
//-该按钮的作用是可以切换到第是不把-对窗体的设计应用于自己,还是应用于全部用户那
panPersonalizationModeToggle.Visible = WebPartManager1.Personalization.CanEnterSharedScope;
//--显示管理员的设置应用的范围户状态
btnPersonalizationModeToggle.Text = string.Format(btnPersonalizationModeToggle.Text,
WebPartManager1.Personalization.Scope.ToString() == "User"?"自己":"所有用户");
}
protected void btnBrowseView_Click(object sender, EventArgs e)
{
WebPartManager1.DisplayMode = WebPartManager.BrowseDisplayMode;
UpdateUI();
}
protected void btnDesignView_Click(object sender, EventArgs e)
{
WebPartManager1.DisplayMode = WebPartManager.DesignDisplayMode;
UpdateUI();
}
protected void btnEditView_Click(object sender, EventArgs e)
{
WebPartManager1.DisplayMode = WebPartManager.EditDisplayMode;
UpdateUI();
}
protected void btnCatalogView_Click(object sender, EventArgs e)
{
WebPartManager1.DisplayMode = WebPartManager.CatalogDisplayMode;
UpdateUI();
}
/// <summary>
/// 只有具有管理权限的人才可以触发的事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnPersonalizationModeToggle_Click(object sender, EventArgs e)
{
//如果当前的WebPart设计关联到User(只应用于用户)则切换到应用于全部用户,反之亦然
WebPartManager1.Personalization.ToggleScope();
UpdateUI();
}
}
}
---又到困的时间了--这是用于验证成员是否具有权限的代码~~个人决的不错啊
public bool EnablePersonalization
{
get { return _enablePersonalization; }
set
{
_enablePersonalization = value;
//----------------------------如果用户验证了并且输入的是true则PersonalizationManager1显示
PersonalizationManager1.Visible = (this.Page.User.Identity.IsAuthenticated && value);
}
}
..本系列是原创阿~~不要误会拉~~