asp.net mvc - 我如何在View Directory中引用一个asp文件

时间:2009-08-19 04:59:15

标签: asp.net-mvc

我的asp..net mvc网站中有一个页面。 (由于某种原因,它必须在此目录中)

查看/会员/日历/ admin.asp中

我试着去:

http://www.mySite.com/Views/Members/Calendar/admin.asp

但这似乎不起作用。

有关如何获得此页面链接的任何建议?

3 个答案:

答案 0 :(得分:3)

View与实际的目录/地址无关,在MVC中,控制器是处理这个的。

假设您从MVC的默认模板开始,地址将是:

http://site.com/CONTROLLER/ACTION/ID

CONTROLLER是控制器类的名称(在控制器目录下),ACTION是控制器内的方法(返回actionresult),ID是作为操作方法参数传递的字符串/ int。

我想你想要的地址如下:

http://mysite.com/Members/Calendar/admin/

放置View或控制器的位置并不重要,但您应该看看global.asax中的路由表。 Routing mvc tutorial

修改

在控制器中,通常你会打电话给

return View();

行动结束时。 View()实际上是controlelr类的重载内部方法调用,它有8种不同的用法。默认情况下不带参数将查找控制器的相同视图名称。要引用除默认值以外的其他视图类,您需要做的就是使用:View(IView Class)。例如,在您的代码中可能是:

return View(new PROJECT.Members.Calendar.Admin());

答案 1 :(得分:2)

ASP.NET MVC阻止对~/Views目录中任何文件的所有访问。如果您要访问*.aspx以外的任何文件,请将~/Views/web.config更改为以下内容:(来自Haacked - Security Tip: Blocking Access to ASP.NET MVC Views Using Alternative View Engines):

如果您想要访问<add ...文件,请

或删除*.aspx

对于IIS 6:

<system.web>
    <httpHandlers>
        <add path="*.aspx" verb="*" type="System.Web.HttpNotFoundHandler"/>
...

对于IIS 7:

<system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <handlers>
        <remove name="BlockViewHandler"/>
        <add name="BlockViewHandler" path="*.aspx" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler"/>

答案 2 :(得分:0)

您是否尝试在忽略此特定网址的注册路由方法顶部添加IgnoreRoute方法?您必须编辑Views文件夹中的web.config以将此路径分配给ASP处理程序,因为〜/ Views文件夹默认情况下会给出404。然后ASP处理程序应该接收请求,因为MVC处理程序将忽略它。