C# 在ASP中检查查询结果
在我的数据库中有一个名为News的表。在新闻中,我有一个名为Link的专栏。此链接可以为空。如果文章是由编辑编写的,则链接将为空;如果编辑只想引用另一个站点的文章,则此链接将包含一个值。 我的任务:为文章添加一个href。这里我有一个问题,如果我的编辑写的文章,我把a href的文章。如果它没有被写入(所以链接不是空的),我必须将href输入。 我不知道怎么做,有什么建议吗? 代码: 显示:C# 在ASP中检查查询结果,c#,asp.net,C#,Asp.net,在我的数据库中有一个名为News的表。在新闻中,我有一个名为Link的专栏。此链接可以为空。如果文章是由编辑编写的,则链接将为空;如果编辑只想引用另一个站点的文章,则此链接将包含一个值。 我的任务:为文章添加一个href。这里我有一个问题,如果我的编辑写的文章,我把a href的文章。如果它没有被写入(所以链接不是空的),我必须将href输入。 我不知道怎么做,有什么建议吗? 代码: 显示: <asp:DropDownList ID="DropDownSelect" runat="serv
<asp:DropDownList ID="DropDownSelect" runat="server" AutoPostBack="True"
OnSelectedIndexChanged="DropDownSelect_SelectedIndexChanged">
<asp:ListItem Selected="True" Value="DesDate"> Descending Date </asp:ListItem>
<asp:ListItem Value="AsDate"> Ascending Date </asp:ListItem>
<asp:ListItem Value="AsAlp"> Ascending Alphabetical </asp:ListItem>
<asp:ListItem Value="DesAlp"> Descending Alphabetical </asp:ListItem>
</asp:DropDownList>
<asp:ListView ID="productList" runat="server"
DataKeyNames="NewsID" GroupItemCount="1"
ItemType="SiteStiri.Models.News" SelectMethod="GetProducts">
<EmptyDataTemplate>
<table >
<tr>
<td>No data was returned.</td>
</tr>
</table>
</EmptyDataTemplate>
<EmptyItemTemplate>
<td/>
</EmptyItemTemplate>
<GroupTemplate>
<tr id="itemPlaceholderContainer" runat="server">
<td id="itemPlaceholder" runat="server"></td>
</tr>
</GroupTemplate>
<ItemTemplate>
<td runat="server">
<table>
<tr>
<td>
<a href="NewsDetails.aspx?newsID=<%#:Item.NewsID%>">
<img src="/Catalog/Images/Thumbs/<%#:Item.ImagePath%>"
width="100" height="75" style="border: solid" /></a>
</td>
</tr>
<tr>
<td>
<a href="NewsDetails.aspx?newsID=<%#:Item.NewsID%>">
<p style="color: black;">
<%#:Item.NewsTitle%>
</p>
</a>
</td>
</tr>
<tr>
<td> </td>
</tr>
</table>
</p>
</td>
</ItemTemplate>
<LayoutTemplate>
<table style="width:100%;">
<tbody>
<tr>
<td>
<table id="groupPlaceholderContainer" runat="server" style="width:100%">
<tr id="groupPlaceholder"></tr>
</table>
</td>
</tr>
<tr>
<td></td>
</tr>
<tr></tr>
</tbody>
</table>
</LayoutTemplate>
</asp:ListView>
</div>
在页面后面:
public IQueryable<News> GetProducts()
{
var _db = new SiteStiri.Models.NewsContext();
IQueryable<News> query = _db.News;
if ("DesDate".Equals(DropDownSelect.SelectedItem.Value))
{
query = query.OrderByDescending(u => u.ReleaseDate);
}
if ("AsDate".Equals(DropDownSelect.SelectedItem.Value))
{
query = query.OrderBy(u => u.ReleaseDate);
}
if ("AsAlp".Equals(DropDownSelect.SelectedItem.Value))
{
query = query.OrderBy(u => u.NewsTitle);
}
if ("DesApl".Equals(DropDownSelect.SelectedItem.Value))
{
query = query.OrderByDescending(u => u.NewsTitle);
}
return query;
}
public void DropDownSelect_SelectedIndexChanged(object sender, EventArgs e)
{
GetProducts();
productList.DataBind();
}
public IQueryable GetProducts()
{
var_db=newsitestiri.Models.NewsContext();
IQueryable查询=_db.News;
如果(“DesDate”.Equals(DropDownSelect.SelectedItem.Value))
{
query=query.OrderByDescending(u=>u.ReleaseDate);
}
如果(“AsDate”.Equals(DropDownSelect.SelectedItem.Value))
{
query=query.OrderBy(u=>u.ReleaseDate);
}
如果(“AsAlp”.Equals(DropDownSelect.SelectedItem.Value))
{
query=query.OrderBy(u=>u.newsttitle);
}
如果(“DesApl.Equals”(DropDownSelect.SelectedItem.Value))
{
query=query.OrderByDescending(u=>u.NewsTitle);
}
返回查询;
}
public void DropDownSelect\u SelectedIndexChanged(对象发送方,事件参数e)
{
GetProducts();
productList.DataBind();
}
如果链接为空或链接的链接不为空,我如何在此处放置指向我站点的页面链接?要给出更详细的答案,请将链接列设置为
非空
,并将默认值设置为您的URL。也就是说,如果用户/新闻编辑器没有输入值,您的URL将添加到该字段中。这样做的好处是不需要任何代码来检查NULL等
此外,请确保UI验证使用正则表达式添加的URL,以防添加恶意值
如果你想在代码中修改它,你可以尝试这样的东西
public class News
{
public string Title { get; set; }
public string Url { get; set; }
public IQueryable<News> GetNews()
{
var news = new List<News> {new News {Title = "News1", Url = "NewsURL"},
new News {Title = "News1"}};
return news.AsQueryable();
}
}
我只是把这个小例子放在一起,展示如何更新链接。你是说
NewsID
可以是NULL
?不,表中有一个链接列,取决于它的值(如果它是NULL或否)我想引用我的页面或保存在“链接”列中的页面。为什么不在数据库中设置它,而不是签入代码?你可以将该列设置为NOT NULL
,并给出你的URL的默认值。你相信我吗,4小时前我想到了这个,然后进入了另一个领域,然后我想解决这个问题,我完全忘记了这个想法,我再也没有想到它:D?我打开过的最愚蠢的帖子…对不起。嗯,有一种方法可以签入代码。这并不是那么愚蠢,也许我以后会使用它。thx Christiandevt非常感谢,我确实像你说的那样处理DB默认链接:DNo问题,我认为这是更干净、更有效的方法:)
var news = new News();
var initialNews = news.GetNews();
var newsWithLink = initialNews.Where(n => n.Url != null);
var newsWithOutLink = initialNews.Where(n => n.Url == null);
foreach (var newsItem in newsWithOutLink)
{
newsItem.Url = "MyURL";
}
var newsToDisplay = newsWithLink.Concat(newsWithOutLink);