Checking a query Result in ASP

本文关键字:in ASP Result query Checking | 更新日期: 2023-09-27 18:26:57

在我的数据库中,我有一个名为News的表。在《新闻》中,我有一个专栏叫林克。该链路CAN为空。如果文章是由编辑编写的,则链接将为空,如果编辑只想引用另一个网站的文章,则此链接将包含一个值。我的任务:为文章做一个href。如果我的编辑写了我在那篇文章中加了一个href的文章,我就有问题了。如果它不是写的(所以链接不是空的),我必须在页面上购买href。我不知道怎么做,有什么建议吗?代码:显示器:

<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>&nbsp;</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();
        }

如果链接为空或链接的链接不为空,我如何将<a href="NewsDetails.aspx?newsID=<%#:Item.NewsID%>">放在这里?

Checking a query Result in ASP

要给出更详细的答案,请将Link列设置为NOT NULL,并将默认值设置为您的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(); 
    }
}

然后你可以取出没有链接的列表,并用你的链接更新它们。。。

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);

我只是把这个小例子放在一起,展示如何更新链接。