我的asp..net mvc网站中有一个页面。 (由于某种原因,它必须在此目录中)
查看/会员/日历/ admin.asp中
我试着去:
http://www.mySite.com/Views/Members/Calendar/admin.asp
但这似乎不起作用。
有关如何获得此页面链接的任何建议?
答案 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处理程序将忽略它。