2011-04-05 71 views
3

我有以下的超链接控件:ASP MVC使用超链接控制

<asp:HyperLink ID="hypTest" runat="server" NavigateUrl="~/Views/TestFolder/TestPage.aspx" > 
    Text here 
</asp:HyperLink> 

但没有找到页面 - 尽管该页面确实存在。我得到的错误是:

Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly. 

Requested URL: /Views/TestFolder/TestPage.aspx 

我的猜测是代字号(〜)在这里不起作用。如果是这种情况,那么为什么,我该如何解决它?

回答

7

如果您使用的是MVC,则应该使用HtmlHelper.ActionLink辅助函数。您目前正在使用webforms超链接控件。假设你有默认路由,你应该能够使用

<%=Html.ActionLink("Text here", "TestPage", "TestFolder")%> 

目前你得到一个404错误作为~/View文件夹中的页面默认情况下阻止。您通常会要求页面~/TestFolder/TestPage

+0

这是否意味着我需要一个专用的控制器用于此视图(即TestPage控制器)? – 2011-04-05 12:31:33

+0

如果这是一个与控制器无关的独立页面,则应将其移到View文件夹之外。如果你创建一个名为TestFolder的文件夹并添加TestPage.aspx,它应该可以工作。如果一个文件存在于url位置,那么它将直接提供给客户端,并且不会通过路由和控制器。 – detaylor 2011-04-05 12:40:52