在ASP中检查查询结果

时间:2014-10-17 14:22:03

标签: c# asp.net

在我的数据库中,我有一个名为News的表。在新闻中,我有一个名为Link的专栏。此链接可以为null。如果文章由编辑者编写,则链接将为null,如果编辑者只想引用其他站点中的文章,则此链接将包含值。 我的任务:制作一篇文章。在这里我有一个问题,如果我的编辑写了一篇关于那篇文章的文章。如果没有写入(因此链接不为空)我必须使用href insteaf。 我不知道怎么做,有什么提示吗? 码: 显示:

<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%>">页面链接放到我的网站?

1 个答案:

答案 0 :(得分:1)

要提供更详细的答案,请将链接列设置为NOT NULL,并将默认值设置为您的网址。这是,如果用户/新闻编辑器没有输入值,您的URL将被添加到该字段中。这样做的好处是您不需要任何代码来检查NULL等。

此外,如果添加了恶意值,请确保UI 验证使用正则表达式添加的网址。

如果你想在代码中改变它,你可以试试这样的......

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

我刚才将这个小例子放在一起,以展示如何更新链接。