0

我是一名新的 ASP.NET 开发人员,我正在尝试开发一个名为 Useful Library 的页面,该页面将包含许多内容,例如有用的演示文稿和 pdf 文档。我在服务器中有一个名为(Useful Resources)的文件夹,我将所有有用的演示文稿和文档都放入其中。我的数据库中有下表:

UsefulResources Table: ID, Category, Title, URL, Uploaded Date, Hits

设计这张表的原因是为了组织资源。我现在希望能够浏览或下载这些文档。***例如,我有一个名为 (AP Presentation) 的演示文稿,它具有:***ID = 5 和 URL = AP Prsentation.pptx******

我的 ASP.NET 代码:

<asp:HyperLinkField DataNavigateUrlFields="ID,URL" 
                                DataNavigateUrlFormatString="Useful Resources/URL={0}" 
                                DataTextField="Title" HeaderText="Title" />

这部分有问题,我不知道如何修复它才能打开或下载此演示文稿,那么该怎么做呢?

供您参考,该页面名为(Library.aspx),我没有任何代码隐藏

更新:

我现在拥有的链接如下:pmvt/msa/pssp/Useful%20Resources/ID=5

顺便说一句,这是一个基于 Intranet Web 的应用程序,因此您将无法使用此链接访问它。

我收到以下错误: 在此处输入图像描述

更新#2: 这是我的 SqlDataSource 的 ASP.NET 代码:

<asp:SqlDataSource ID="Sql_Reports" runat="server" 
                        ConnectionString="<%$ ConnectionStrings:testConnectionString %>" 
                        SelectCommand="SELECT [ID], [Title], [URL], [UploadedDate] FROM [UsefulResources] WHERE ([Category] = @Category) ORDER BY [UploadedDate] DESC">
                        <SelectParameters>
                            <asp:ControlParameter ControlID="Label1" Name="Category" PropertyName="Text" 
                                Type="String" />
                        </SelectParameters>
                    </asp:SqlDataSource>
                    <asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" 
                        CellPadding="4" DataSourceID="Sql_Reports" ForeColor="#333333" GridLines="None" 
                        Width="100%">
                        <FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
                        <RowStyle BackColor="#E3EAEB" />
                        <Columns>
                            <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title">
                                <ItemStyle HorizontalAlign="Center" Wrap="False" Width="100px" />
                            </asp:BoundField>
                            <asp:HyperLinkField DataNavigateUrlFields="URL" 
                                DataNavigateUrlFormatString="Useful Resources?URL={0}" 
                                DataTextField="Title" HeaderText="Title" />
                            <asp:BoundField DataField="UploadedDate" DataFormatString="{0:MMM yyy}" HeaderText="UploadedDate" 
                                SortExpression="UploadedDate">
                                <ItemStyle HorizontalAlign="Center" Wrap="False" Width="100px" />
                            </asp:BoundField>
                        </Columns>
                        <PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" />
                        <SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" />
                        <HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
                        <EditRowStyle BackColor="#7C6F57" />
                        <AlternatingRowStyle BackColor="White" />
                    </asp:GridView>

我仍然得到链接为pmvt/msa/pssp/Useful%20Resources/?URL=Electrical%20safety.ppt。我应该怎么做才能从该链接中删除(?URL=)以使链接正常工作。

更新#2:

以下是在数据库中使用其数据创建表的脚本:

/****** Object:  Table [dbo].[UsefulResources]    Script Date: 08/06/2012 07:08:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[UsefulResources](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [Category] [varchar](max) NULL,
    [Title] [varchar](max) NULL,
    [URL] [nvarchar](max) NULL,
    [UploadedDate] [datetime] NULL,
    [Hits] [int] NULL,
 CONSTRAINT [PK_UsefulResources] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
SET IDENTITY_INSERT [dbo].[UsefulResources] ON
INSERT [dbo].[UsefulResources] ([ID], [Category], [Title], [URL], [UploadedDate], [Hits]) VALUES (1, N'PowerPoint Presentations', N'PMOD', N'Electrical safety.ppt', CAST(0x0000A0A000000000 AS DateTime), 1)
INSERT [dbo].[UsefulResources] ([ID], [Category], [Title], [URL], [UploadedDate], [Hits]) VALUES (2, N'Word Documents', N'Fire Drill Evaluation', N'Fire Drill Evaluation.docx', CAST(0x0000A0A300000000 AS DateTime), 1)
SET IDENTITY_INSERT [dbo].[UsefulResources] OFF
4

3 回答 3

0

404 错误(如您所见)意味着 Web 服务器找不到链接应该指向的页面。问题可能是 URL 的 Useful%20Resources/ID=5 部分。

通常,参数在 URL 末尾的问号后作为键=值对传递,例如 Useful%20Resources?ID=5。情况并非总是如此(尤其是在 MVC 应用程序中),因为您可以更改站点的路由数据以从给定 url 返回几乎任何页面,但我建议您先验证该位。摆脱 404 错误后,请查看您可能遇到的任何其他问题。

于 2012-08-05T07:18:38.087 回答
0

我在一个 Web 项目中创建了一些目录,如下所示: Documents/WhitePaper/Resources/PDF 并将一些文档放在那里,Word.doc、Excel.xls、PowerPoint.ppt。现在在网格视图中:

<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False"  
CellPadding="4" DataSourceID="SqlDataSource1" 
ForeColor="#333333" GridLines="None"  
Width="99%"> 
<FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" /> 
<RowStyle BackColor="#E3EAEB" /> 
<Columns> 
<asp:BoundField DataField="Category" HeaderText="Category" SortExpression="Title"> 
<ItemStyle HorizontalAlign="Center" Wrap="False" Width="100px" /> 
</asp:BoundField> 
<asp:HyperLinkField DataNavigateUrlFields="Url"  
DataNavigateUrlFormatString="{0}"  
DataTextField="Category" HeaderText="Category" /> 
</Columns> 
<PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" /> 
<SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" /> 
<HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" /> 
<EditRowStyle BackColor="#7C6F57" /> 
<AlternatingRowStyle BackColor="White" /> 
</asp:GridView> 

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
    SelectCommand="SELECT * FROM [UsefulResources]"></asp:SqlDataSource>

此网格视图中的链接指向每个文件,单击时开始下载目标文件。数据库中的 Url 字段如下所示: ~/Documents/WhitePaper/Resources/PDF/test.pdf

于 2012-08-07T11:36:52.090 回答
0

Useful我认为和之间的空白Resources会导致此错误。更正源文件的地址,然后重试:

<asp:HyperLinkField DataNavigateUrlFields="URL" 
                                DataNavigateUrlFormatString="{0}" 
                                DataTextField="Title" HeaderText="Title" />
于 2012-08-05T14:28:41.217 回答