C# 网页显示取决于不同的用户

C# 网页显示取决于不同的用户,c#,C#,我有很多用户。用户登录后,将在其配置文件中看到一个包含文档列表的gridview。假设有两个用户abc和xyz。abc有像little,tiger,load这样的文档列表,xyz有documnets列表flower,tiger。我想创建这样一个网页,当abc登录时,他的主页的gridview应该包含little,tiger,load,当xyz登录时,他的主页的gridview应该包含flower,tiger。如何执行此操作?您应该使用会话对象 当用户abc登录时,您给他会话“a” 当用户xyz登

我有很多用户。用户登录后,将在其配置文件中看到一个包含文档列表的gridview。假设有两个用户abc和xyz。abc有像little,tiger,load这样的文档列表,xyz有documnets列表flower,tiger。我想创建这样一个网页,当abc登录时,他的主页的gridview应该包含little,tiger,load,当xyz登录时,他的主页的gridview应该包含flower,tiger。如何执行此操作?

您应该使用会话对象

当用户abc登录时,您给他会话“a”

当用户xyz登录时-您给他会话“b”


这是您应该如何处理的。

我不知道您使用的是哪种数据存储,但我们的想法是,每个文档都有一个名为
UserID
的属性,当用户登录时,您会用所有具有
UserID==LoggedUserID
的文档填充页面

评论后编辑:

我假设您的用户数据存储在标准的.NET用户数据库中。如果无法连接数据库中的用户和文档,则应添加一列,用于存储有权访问文档的角色,而不是用户。然后每个文档都有一个角色,该角色的成员可以查看文档

但更好的方法是在数据库级别使用N:M关系表连接文档和用户。然后每个文档都会有一个可以看到它的用户列表

您没有将控件与表1连接,而是根据表1的文档检查登录用户的用户名(或其他属性)。当用户成功登录时,您可以从
页面
属性
user.Identity.Name
获取他的用户名。或者,如果在文档中使用角色,则可以通过
user.IsInRole(“角色名称”)


这个问题非常广泛,很难给出具体的答案。

您需要一段将文档链接到用户的数据。我建议对用户进行分组,然后对每个文档应用一个标志,说明该文档是否可以显示在组中。这样做的好处是,一个用户可以属于多个组


用户登录时,会话可以包含对其所属组的引用。

您可以使用设计页面上的列表框,创建包含相关文件名的列表,然后简单地将列表框与列表绑定

一个例子可以是:

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">

            <StackPanel Margin="0,-21,0,0">
                <ListBox  Height="650" HorizontalAlignment="Left" Margin="0,0,0,0" Name="listBoxNews" FontSize="14" VerticalAlignment="Top" Width="472" ItemsSource="{Binding NewsDetailsCollection}" Foreground="#FF0A0909" FontWeight="Normal"  >
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <StackPanel Orientation="Vertical" Width="400" Canvas.Left="50" Height="270" Canvas.Top="6">
                                <StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
                                    <TextBlock Height="38" Name="lblTitle" Width="260" FontSize="28" Foreground="White" FontWeight="Bold" TextWrapping="Wrap" Text="{Binding title}" HorizontalAlignment="Left" />
                                    <Button Content="Click" Click="Button_Click" ></Button>
                                </StackPanel>

                            </StackPanel>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>
            </StackPanel>
        </Grid>

C#

公共部分类新闻:PhoneApplicationPage
{
公共新闻
{
UriBuilder fullUri=新的UriBuilder(“http://news.google.co.in/news");
fullUri.Query=“hl=en&gl=in&q=孟买+马拉松&um=1&ie=UTF-8&output=rss”;
HttpWebRequest forecastRequest=(HttpWebRequest)WebRequest.Create(fullUri.Uri);
ForecastUpdateEstate forecastState=新ForecastUpdateEstate();
forecastState.AsyncRequest=forecastRequest;
forecastRequest.BeginGetResponse(新的异步回调(HandleForecastResponse),forecastState);
//wbt.URL=”http://www.google.com";
//wbt.Show();
初始化组件();
}
私有无效HandleForecastResponse(IAsyncResult asyncResult)
{
ForecastUpdateState=(ForecastUpdateState)asyncResult.AsyncState;
HttpWebRequest forecastRequest=(HttpWebRequest)forecastState.AsyncRequest;
forecastState.AsyncResponse=(HttpWebResponse)forecastRequest.EndGetResponse(asyncResult);
溪流结果;
//从异步调用获取包含响应的流
streamResult=forecastState.AsyncResponse.GetResponseStream();
//加载XML
XElement xmlNews=XElement.Load(streamResult);
XElement xmlCurrent=xmlNews.subjects(“通道”).First();
XElement x1=xmlCurrent.subjects(“项”).First();
字符串标题=(字符串)x1.Element(“标题”);
IEnumerable xmlIEnumerableNews=xmlCurrent.substands(“项”);
IEnumerable objIEnumerableNews=来自xmlIEnumerableNews中的元素
选择新新闻详情
{
title=(字符串)(element.element(“title”),
link=(字符串)(element.element(“guid”),
日期=(字符串)(element.element(“pubDate”))
};
List objListNews=新列表();
int count=objListNews.count;
foreach(ObjeNumerableNews中的NewsDetails新闻)
{
news.title=news.title+“”+news.date;
int pos=news.link.IndexOf('=');
news.link=news.link.Substring(pos+1,news.link.Length-pos-1);
添加(新闻);
}
int t=objListNews.Count();
Deployment.Current.Dispatcher.BeginInvoke(()=>
{
listBoxNews.ItemsSource=objListNews;
});
}
私有无效按钮\u单击(对象发送者,路由目标e)
{
NewsDetails新闻=(发件人作为按钮)。DataContext作为NewsDetails;
WebBrowserTask wbt=新的WebBrowserTask();
wbt.URL=news.link;
public partial class News : PhoneApplicationPage
    {
        public News()
        {

            UriBuilder fullUri = new UriBuilder("http://news.google.co.in/news");
            fullUri.Query = "hl=en&gl=in&q=mumbai+marathon&um=1&ie=UTF-8&output=rss";
            HttpWebRequest forecastRequest = (HttpWebRequest)WebRequest.Create(fullUri.Uri);

            ForecastUpdateState forecastState = new ForecastUpdateState();
            forecastState.AsyncRequest = forecastRequest;

            forecastRequest.BeginGetResponse(new AsyncCallback(HandleForecastResponse), forecastState);

            //  wbt.URL = "http://www.google.com";
            //wbt.Show();

            InitializeComponent();
        }
        private void HandleForecastResponse(IAsyncResult asyncResult)
        {
            ForecastUpdateState forecastState = (ForecastUpdateState)asyncResult.AsyncState;
            HttpWebRequest forecastRequest = (HttpWebRequest)forecastState.AsyncRequest;

            forecastState.AsyncResponse = (HttpWebResponse)forecastRequest.EndGetResponse(asyncResult);

            Stream streamResult;
            // get the stream containing the response from the async call
            streamResult = forecastState.AsyncResponse.GetResponseStream();
            // load the XML
            XElement xmlNews = XElement.Load(streamResult);
            XElement xmlCurrent = xmlNews.Descendants("channel").First();
            XElement x1 = xmlCurrent.Descendants("item").First();
            string title = (string)x1.Element("title");


            IEnumerable<XElement> xmlIEnumerableNews = xmlCurrent.Descendants("item");

            IEnumerable<NewsDetails> objIEnumerableNews = from element in xmlIEnumerableNews
                                                          select new NewsDetails
                                                          {
                                                              title = (string)(element.Element("title")),
                                                              link = (string)(element.Element("guid")),
                                                              date = (string)(element.Element("pubDate"))
                                                          };


            List<NewsDetails> objListNews = new List<NewsDetails>();
            int count = objListNews.Count;
            foreach (NewsDetails news in objIEnumerableNews)
            {
                news.title = news.title + " " + news.date;
                int pos = news.link.IndexOf('=');
                news.link = news.link.Substring(pos + 1, news.link.Length - pos - 1);
                objListNews.Add(news);
            }

            int t = objListNews.Count();
            Deployment.Current.Dispatcher.BeginInvoke(() =>
            {
                listBoxNews.ItemsSource = objListNews;
            });
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            NewsDetails news = (sender as Button).DataContext as NewsDetails;
            WebBrowserTask wbt = new WebBrowserTask();
            wbt.URL = news.link;
            wbt.Show();

        }

        private void FAQs_Click(object sender, EventArgs e)
        {
            NavigationService.Navigate(new Uri("/Info/FAQs/Questions.xaml", UriKind.Relative));

        }

        private void Weather_Click(object sender, EventArgs e)
        {
            NavigationService.Navigate(new Uri("/Info/Weather.xaml", UriKind.Relative));

        }

        private void About_Click(object sender, EventArgs e)
        {
            NavigationService.Navigate(new Uri("/Info/About.xaml", UriKind.Relative));

        }

    }
    public class NewsDetails
    {
        public string title { get; set; }
        public string link { get; set; }
        public string date { get; set; }
        //public String title, link, description;
    }