问题标签 [asp.net-4.0]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - ASP.Net 4.0 - SiteMap 构建需要响应?
我遇到了将项目升级到 .Net 4.0 的问题......并且无法找到问题的任何原因(或者至少是导致它的更改)。鉴于 4.0 的新鲜度,还没有很多博客讨论问题,所以我希望这里有人有想法。前言:这是一个 Web Forms 应用程序,从 3.5 SP1 到 4.0。
如果Application_Start
我们遍历 SiteMap 并根据那里的数据构建路由(美化 URL 主要是添加了一些实用程序),那部分并没有失败……或者至少没有走那么远。
似乎调用SiteMap.RootNode(在 application_start 内)会导致 4.0 吃掉它,因为XmlSiteMapProvider.GetNodeFromXmlNode
方法已更改,查看反射器可以看到它在HttpResponse.ApplyAppPathModifier
这里击中:
HttpResponse
在 2.0 CLR 的这个方法中根本没有使用,所以我们工作得很好,但是在 4.0 中,这个方法被调用作为这个堆栈的结果:
由于Response
在 4.0 中不可用,我们得到一个错误。要重现这一点,您可以将测试用例缩小到全局范围内:
问题:我在这里遗漏了一些明显的东西吗? 或者,是否在 4.0 中添加了另一个推荐用于启动时与 SiteMap 相关的事件?
对于任何好奇/愿意提供帮助的人,我创建了一个非常小的项目(一个默认的 VS 2010 ASP.Net 4.0 站点,所有的花里胡哨都被删除了,只有一个空白的站点地图和Application_Start
添加的代码)。这是一个 10kb 的小 zip,可在此处获得:http ://www.ncraver.com/Test/SiteMapTest.zip
更新:
不是一个很好的解决方案,但当前的解决方法是在 中完成工作Application_BeginRequest
,如下所示:
我特别不喜欢这样,感觉像是滥用事件来绕过问题。有没有人至少有更好的解决方法,因为 SiteMap 的 .Net 4 行为不太可能改变?
asp.net-ajax - ASP.Net AJAX 4.0 模板文件的发布版本在哪里?
我正在尝试使 ASP.Net AJAX 4.0 模板的发布版本正常工作,但找不到 JavaScript 文件。在测试版中,我需要参考 MicrosoftAjaxTemplates.js、MicrosoftAjaxAdoNet.js 和 MicrosoftAjaxDataContext.js。
我可以让一切都与 beta CDN 版本一起工作(例如http://ajax.microsoft.com/ajax/beta/0911/MicrosoftAjaxTemplates.js)。但是对于我的生活,我找不到 1.这些文件的发布 CDN 版本或 2.在哪里下载整个 Release ASP.Net AJAX 4.0 JavaScript 包。
这些文件肯定没有在http://www.asp.net/ajaxlibrary/CDNAjax4.ashx的 ASP.Net AJAX 4.0 CDN 上列出。也许文件已重命名?或者,如果它还没有发布,那么什么时候发布,CodePlex 上这些文件的最新版本在哪里?
从理论上讲,这应该是一个非常简单的问题,我什至在 StackOverflow 上问它都有些尴尬,但我自己没有找到答案。任何帮助将非常感激。
谢谢, - 李
c# - ASP.NET 4.0 网络表单路由
我有一个现有的站点,我想将其转换为使用路由,在阅读了 Scott Guthrie 的帖子后,我构建了一个适用于大多数情况的工作示例。但是,由于并非现有站点上的所有页面都与特定模式匹配,因此我需要检查数据库以确定要使用的路由(目标 .aspx 页面)。
例如,大多数页面是这样的:
http://www.mysite.com/people/person.html
这很好 - 由于“人”目录,我可以轻松地将这些路由到 view_person.aspx 页面。
但是有些页面是这样的:
http://www.mysite.com/category_page.html http://www.mysite.com/product_page.html
这需要检查数据库以查看是路由到 view_category.aspx 页面还是 view_product.aspx 页面。 这就是我卡住的地方。 我是否创建一个 IRouteHandler 来检查数据库并返回路由?或者,还有更好的方法?我发现的唯一代码就是这个问题的答案。
提前致谢。
asp.net - Default.aspx 与 IIS 6.0 和 .Net 4?
- 我们在 IIS 6.0 上部署了一个 .net 4 asp.net 站点。
- Default.aspx 被配置为默认文件之一。
- 当我们使用以下网址访问网站时
http://testsite
我们期望它渲染
http://testsite/Default.aspx
但相反,我们得到404 Not found error
. 当它部署在 .Net 2.0 上时,我们没有遇到这个问题。服务器上唯一改变的是我们使用 .NET 4 而不是 .NET 2.0。
更新:我尝试了以下链接,但没有成功。
服务器上的框架版本是 .NET 4 RC。如果我们在服务器上安装最新的 .NET 4 版本会有帮助吗?
更新:问题现已解决。问题是我们使用的第三方上传控件在 Web.Config 中添加了自己的 HttpHandler。此 HttpHandler 在 .NET 4 中开始失败。
model-view-controller - ASP.NET WebForms vs MVC [在 VS2010/.NET 4.0 公告之后]
MVC 相对于 web 表单的两个最大优势是不存在的视图状态和 URL 路由。VS2010 和 .NET 4.0 为 Webforms 合并了内置的 URL 路由以及对视图状态的更好控制。
由于 MVC 设计模式及其一般的轻量级特性,我主张将 MVC 用于外联网站点,但鉴于这一新公告,Webforms 是否缩小了差距?为什么你仍然会选择 MVC 而不是 Webforms?
谢谢
asp.net - asp.net 4.0 webforms - 如何以简单的方式将 ContentPlaceHolder1_ 排除在客户端 ID 之外?
我正在尝试将母版页引入现有的 webforms 站点,该站点由于过去的客户端 ID 修改而避免使用它们(而且我不想处理修改并在任何地方都做 <% foo.ClientID %> :)
目标:使用“静态”id 值(服务器控件的 id 属性中的任何内容),但数据绑定/重复控件除外,这些控件会因这些情况而中断,因此需要后缀或其他区分(基本上,可预测)
现在该站点迁移到 ASP.NET 4.0,我首先尝试使用静态的 ClientIDMode(在 web.config 中),但这破坏了太多重复控件的地方(例如,gridviews 中的复选框),因为它们都产生相同的结果ID。
所以,然后我尝试了 Predictable(再次,只是在 web.config 中),这样重复控件不会有冲突的 id,它工作得很好,除了母版页内容占位符(它确实是一个命名容器)仍在反映在生成的客户端 ID 中(例如,ContentPlaceHolder1_someCheckbox)。
当然,我可以将 web.config 设置保留为静态,然后通过所有数据绑定/重复控件将它们切换为可预测,但我希望有一些更简单/更简单的方法来获得这种效果,而不必在那些 N 中分散 ClientIDMode 属性位置数(或使用我自己的用户控件扩展所有那些数据绑定控件,该控件仅设置 clientidmode 或其他)。
我什至想过将 web.config 设置为 static 并做一个 master 或 basepage 处理程序(preinit?不确定这是否可行),它将使用 OfType <INamingContainer
>() 进行控制(可能是类型的更好选择,但这似乎是查看中继器和网格视图的一个不错的开始选择),然后将它们设置为可预测的,这样我就可以在重复控件之外获得所有“正常”事物的静态,但不必处理网格视图/中继器等事物内部的静态/ETC。
我看不到任何标记内容占位符的方法,以便它“选择退出”不包含在子 ID 中 - 将占位符的 ID 设置为空/空白不起作用,因为它是必需的属性:)
那时我想有一种更好/更简单的方法我错过了,并决定问 SO :)
编辑:我考虑过将我所有的“按 id 获取”jquery 调用从 $('#foo') 更改为 fetch_by_id('foo') ,然后让该函数通过检查 $('#foo') 返回“正确的” .length 然后 $('#ContentPlaceHolder1_foo').length (可能还有其他模式),甚至只是让它返回 $('#foo, #ContentPlaceHolder1_foo') (同样,可能是其他模式)但改变了我获取元素的所有地方by id 看起来也很丑陋,如果可能的话,我想避免那个抽象层很容易:)
Edit2:WRT 使用 id$='foo' 的 jQuery 选择器:
我担心做这样的事情(尽管它可能比想象的更真实)是当页面中的一个 id 以另一个结尾时。例如,如果一个页面包含 id 为 'foo' 和 'barfoo' 的元素,那么 id$='foo' 也会意外地包含 'barfoo'。当然有很多方法可以防止这种情况发生(比如添加元素类型后缀,例如 fooCheckbox 和 barfooButton 或其他),但我不想扫描现有源和/或强制执行新的命名规则。
由于并非所有控件都是服务器控件,因此我也无法 $='_foo' 因为找不到普通的 div id="foo" (我宁愿避免 runat="server" 只是为了破坏姓名 :)
我考虑的另一件事是为每个元素创建一个唯一的 css 类名称并选择它(因为类显然不会被弄乱)但是这样做非常hacky,并且在做“真正的” CSS 工作时肯定会使事情变得混乱 :)
asp.net-mvc-2 - IntegrationTests - 从客户端检测到潜在危险的 Request.Path 值
我收到此错误:A potentially dangerous Request.Path value was detected from the client (?).
当此 URI: 时http://www.site.com/%3f
。
如何围绕所有此类错误编写集成测试?
我想针对所有这些错误进行测试:
url - ASP.NET 4 URL 限制:为什么 URL 不能包含任何 %3f 个字符
此 URL 将返回以下错误:
我已经把它放在 web.config 中:
我该如何解决这个错误?
asp.net - ASP.NET 4.0 路由和子文件夹
我有一个这样的文件夹结构:
我在这样的用户控件中有一个链接:
在我的 RegisterRoutes() 方法中,我有这个:
它可以工作,但会产生以下 URL:
我想要的是这样的:
开箱即用的 4.0 路由可以做到这一点吗?
更新 2 - 05-14-2010:
显然,我通过将 .aspx Web 表单命名为与包含文件夹相同的名称,引入了一个额外的问题。最后,这对我有用:
Raj 提供的链接帮助我找到了答案 :-)
http://msdn.microsoft.com/en-us/library/cc668201.aspx
c# - .NET 4.0 控件的 RenderOuterTable 属性问题
根据新的 4.0 框架概述,应该能够将属性 RenderOuterTable="false" 添加到支持该属性的控件并看到 CSS 友好代码被吐出 - 换句话说,没有 HTML 表格。
为了测试这一点,我使用以下代码将登录控件放入一个基本的新网页中:
结果?蹩脚的 HTML 表格输出,据说在此属性设置为 false 时不会发生这种情况。这是输出:
希望你明白这一点。如何阻止这些控件输出表格?这太烦人了。