C# 网页显示取决于不同的用户
我有很多用户。用户登录后,将在其配置文件中看到一个包含文档列表的gridview。假设有两个用户abc和xyz。abc有像little,tiger,load这样的文档列表,xyz有documnets列表flower,tiger。我想创建这样一个网页,当abc登录时,他的主页的gridview应该包含little,tiger,load,当xyz登录时,他的主页的gridview应该包含flower,tiger。如何执行此操作?您应该使用会话对象 当用户abc登录时,您给他会话“a” 当用户xyz登录时-您给他会话“b”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登
这是您应该如何处理的。我不知道您使用的是哪种数据存储,但我们的想法是,每个文档都有一个名为
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;
}