两个关于asp.net MVC的问题

diandian82 2009-11-13 04:51:45
1. 如何像在webform里面一样使用.ashx文件?我需要用这个东西来动态显示数据库图片,但折腾了一下午也没搞出来,始终无法正确执行这个。在web里搜了很多也没有什么好用的。大家有什么好方法么?

2.
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

这句话是在global.asax文件里面的,是什么作用,有没有人给讲讲。我添加了routes.IgnoreRoute("{resource}.ashx/{*pathInfo}");但还是访问不到ashx文件。
...全文
250 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
diandian82 2009-11-13
  • 打赏
  • 举报
回复
好像放到shared目录下就不行,放在content目录下可以
diandian82 2009-11-13
  • 打赏
  • 举报
回复
cool!!!

多谢杨哥!!
webdiyer 2009-11-13
  • 打赏
  • 举报
回复
专门花了点时间给你做了个示例,使用ashx文件做为img的src属性呈现图片、给view添加codebehind文件以及在view中使用asp.net webform控件并在code behind文件中设置其属性,给view添加code behind文件的步骤:
1.在View所在文件夹添加一个类(.cs或.vb)文件,文件名称为“{View名}.aspx.cs“
2.在新建的类文件中引入命名空间System.Web.Mvc,并使新建的类文件从ViewPage继承;
3.修改View文件(.aspx)中的Inherits=后边的部分为新建的类名的完整限定名,类似于:MyMvcApp.Views.Home.Index;

普通的asp.net webform控件一样可以在asp.net mvc的View中使用,但因为asp.net mvc不支持ViewState以及form runat="server"标签,所以有这类要求的控件可能无法使用或者运行不正常。

点击这里下载示例项目
diandian82 2009-11-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 webdiyer 的回复:]
第一个问题不是问题,我就在项目中用过ashx,和webform没有任何区别,也不需要任何特别设置,我的ashx文件在网站的根目录下,不过我现在已经不用这个了,我改用Action实现了。
第二个没试过,但应该是可以的,如果VS中没有相应的菜单项,你可以直接新建一个和view同名的cs文件试试。
另外欢迎访问我的主页:www.webdiyer.com ,有我写的一些asp.net免费控件,以后还会发布更多,还准备有空写一些相关教程。
[/Quote]

吴哥,我怎么试都无法使用ashx文件,设置断点根本无法进入。你有没有小的sample给我看看?
diandian82 2009-11-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sozdream 的回复:]
第一个问题: (只是建议, 没处理过这问题)
检查web.config中是否有配置Http Handler处理.ashx文件,
再检查MVC的Route, 让它忽略.ashx文件的重定向.

第二个问题:
这是不可能的, MVC中, view只能提交给controller, 然后由controller决定转向某个module或另一个view.
codebehind技术是webform特有的,
我想你决定项目用MVC, 应该比较清楚MVC和WebForm开发asp.net的区别吧...

各有优势,
但如果团队中很少人知道MVC.NET, 那就慎用...
[/Quote]

我的意思是说在一个view里面的控制流程,比如分页,如果到最后一页的话,就把next和last隐藏掉。
类似这种逻辑,有没有别的什么方法实现?
<% if ((int)ViewData["CurrentPageIndex"] > 1)
{%>

<td><%= Html.ActionLink("First", "1")%></td>
<td><%= Html.ActionLink("Prev", ((int)ViewData["CurrentPageIndex"] - 1).ToString())%></td>

<%} %>

<% if ((int)ViewData["CurrentPageIndex"] < (int)ViewData["MaxPageIndex"]) { %>
<td><%= Html.ActionLink("Next", ((int)ViewData["CurrentPageIndex"]+1).ToString())%></td>
<td><%= Html.ActionLink("Last", ViewData["MaxPageIndex"].ToString())%></td>
<%} %>
webdiyer 2009-11-13
  • 打赏
  • 举报
回复
第一个问题不是问题,我就在项目中用过ashx,和webform没有任何区别,也不需要任何特别设置,我的ashx文件在网站的根目录下,不过我现在已经不用这个了,我改用Action实现了。
第二个没试过,但应该是可以的,如果VS中没有相应的菜单项,你可以直接新建一个和view同名的cs文件试试。
另外欢迎访问我的主页:www.webdiyer.com ,有我写的一些asp.net免费控件,以后还会发布更多,还准备有空写一些相关教程。
龙翔飞雪 2009-11-13
  • 打赏
  • 举报
回复
第一个问题: (只是建议, 没处理过这问题)
检查web.config中是否有配置Http Handler处理.ashx文件,
再检查MVC的Route, 让它忽略.ashx文件的重定向.

第二个问题:
这是不可能的, MVC中, view只能提交给controller, 然后由controller决定转向某个module或另一个view.
codebehind技术是webform特有的,
我想你决定项目用MVC, 应该比较清楚MVC和WebForm开发asp.net的区别吧...

各有优势,
但如果团队中很少人知道MVC.NET, 那就慎用...
mytimes_walker 2009-11-13
  • 打赏
  • 举报
回复

<add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add name="MvcHttpHandler" preCondition="integratedMode" verb="*" path="*.mvc" type="System.Web.Mvc.MvcHttpHandler, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add name="UrlRoutingHandler" preCondition="integratedMode" verb="*" path="UrlRouting.axd" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>

这是MVC里面配置文件,楼主试试从配置文件入手,目前也在研究这个问题,是不是要自己写Handler?
threenewbee 2009-11-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 diandian82 的回复:]
追加一个问题,就是,可不可以给view增加codebehind的cs文件,现在好像吧所有显示的控制流程都写在页面里面,感觉很不爽,如果页面复杂点,看都看不懂了。有什么好办法没有?最好有例子。
[/Quote]
错,应该写在Model里面。
diandian82 2009-11-13
  • 打赏
  • 举报
回复
追加一个问题,就是,可不可以给view增加codebehind的cs文件,现在好像吧所有显示的控制流程都写在页面里面,感觉很不爽,如果页面复杂点,看都看不懂了。有什么好办法没有?最好有例子。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧