我通过Visual Studio 2012创建了一个新的ASP.NET Web窗体项目.不幸的是,默认的Site.Master文件非常混乱.(我将这些问题一起发布,因为它们非常相关并且引用了相同的代码.)
首先,我已经了解了捆绑和缩小的目的,因此无需讨论.但是我不明白脚本被包含在默认母版页中的方式.
问题1:
为什么在BundleConfig.cs文件中创建了一个名为"〜/ bundles/WebFormsJs"的包,但是在主页中,这些相同的单个.js文件中的每一个都在ScriptManager中逐一列出?
在BundleConfig.cs中:
bundles.Add(new ScriptBundle("~/bundles/WebFormsJs").Include(
"~/Scripts/WebForms/WebForms.js",
"~/Scripts/WebForms/WebUIValidation.js",
"~/Scripts/WebForms/MenuStandards.js",
"~/Scripts/WebForms/Focus.js",
"~/Scripts/WebForms/GridView.js",
"~/Scripts/WebForms/DetailsView.js",
"~/Scripts/WebForms/TreeView.js",
"~/Scripts/WebForms/WebParts.js"));
Run Code Online (Sandbox Code Playgroud)
Inside Site.Master:
<body>
<form runat="server">
<asp:ScriptManager runat="server">
<Scripts>
<%--Framework Scripts--%>
<asp:ScriptReference Name="MsAjaxBundle" />
<asp:ScriptReference Name="jquery" />
<asp:ScriptReference Name="jquery.ui.combined" />
<asp:ScriptReference Name="WebForms.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebForms.js" />
<asp:ScriptReference Name="WebUIValidation.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebUIValidation.js" />
<asp:ScriptReference Name="MenuStandards.js" Assembly="System.Web" Path="~/Scripts/WebForms/MenuStandards.js" />
<asp:ScriptReference Name="GridView.js" Assembly="System.Web" Path="~/Scripts/WebForms/GridView.js" />
<asp:ScriptReference Name="DetailsView.js" Assembly="System.Web" Path="~/Scripts/WebForms/DetailsView.js" />
<asp:ScriptReference Name="TreeView.js" Assembly="System.Web" Path="~/Scripts/WebForms/TreeView.js" />
<asp:ScriptReference Name="WebParts.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebParts.js" />
<asp:ScriptReference …Run Code Online (Sandbox Code Playgroud) 我已经将"Web Essentials"扩展安装到Visual Studio 2013中.我现在在"消息"部分下的"错误列表"窗口中显示JSHint警告.然而,它抱怨一些它认为没有定义的全局变量.
根据我的阅读,您可以使用JSHint的.jshintrc文件列出全局变量,这样它就会停止抱怨它们.我希望它设置如下.(这样它就会停止抱怨"ko"......这是一个KnockoutJs的全局变量.)
"globals": {
"$": false,
"jQuery": false,
"ko": false
}
Run Code Online (Sandbox Code Playgroud)
你应该如何以及在哪里创建VS Project中的.jshintrc文件?
我尝试在项目的根目录中添加文件,将其命名为".jshintrc",但Visual Studio抱怨说:
"File and folder names cannot contain a leading period."
Run Code Online (Sandbox Code Playgroud)
我似乎无法找到有关如何将此文件添加到Visual Studio项目中的任何文档,以便Web Essentials扩展程序可以获取它.
有任何想法吗?
更新
Hex有正确的答案.我不得不打开一个命令提示符来重命名该文件,因为Windows资源管理器不会让我命名一个以句点开头的文件.在那之后,我也遵循了Hex的建议,用花括号围绕整个事物.以下是我的.jshintrc文件的内容....我将其放在WebApp的根文件夹中......以及其他文件,如web.config.
{
"globals": {
"$": false,
"jQuery": false,
"ko": false
}
}
Run Code Online (Sandbox Code Playgroud)
我不再收到关于"ko"对象的1000万次不必要的警告.:)谢谢Hex!
我在VS2012中注意到,当您创建新的EF模型(.edmx)时,DbContext是默认代码生成,而.tt(T4模板)文件现在嵌套在解决方案资源管理器中的.edmx文件下.
问题: 有没有办法将这些.tt文件移动到另一个文件夹或项目? 当我尝试在解决方案资源管理器中拖放时,它将不允许我移动嵌套的.tt文件.
问题详细信息: 以前(在VS2010中)我曾经将我的POCO的一个.tt文件移动到一个名为DataDefinitions的类库中,我将另一个.tt文件留给了一个名为DataAccess的类库中的上下文.现在看来我将无法移动这些文件......并将我的资产分成不同的层.
在这篇MSDN文章中,如果你滚动到底部,你可以看到.tt文件现在如何嵌套的图片... http://msdn.microsoft.com/en-us/data/jj613116
编辑:
有些人建议直接在表单上提交提交.这不是我想要实现的目标.具体来说,我希望能够在输入类型='submit'上调用click()事件,并让它像通常那样提交表单.jQuery UI对话似乎干扰了这种正常行为.请查看我创建的jsFiddle链接,因为问题可以在那里重新创建.
(首先我已经在StackOverflow上看到了这个问题,但答案在我的情况下不起作用: 带有ASP.NET按钮回发的jQuery UI对话框)
期望的行为:
在我的页面上,我有一个隐藏字段和一个提交按钮(通过CSS隐藏).
我想要做的是使用JavaScript以编程方式单击此按钮,从而导致提交表单.最重要的是....我想从jQuery UI对话框中触发所有这些.基本上,用户将在jQuery UI对话框中进行选择,这将导致整个页面被提交和重新加载.
问题陈述
触发这样的按钮点击通常可以正常提交表单.但是,当从jQuery UI对话框中触发操作时,它会失败.
正如你在我的jsFiddle代码中看到的,我在提交按钮上调用了jQuery的click()函数....但是表单实际上并没有提交!该按钮确实被JavaScript点击,但"表单提交行为"本身并未发生.该页面未发布.
我相信jQuery UI对话框会以某种方式干扰我尝试以编程方式单击的按钮的表单提交行为.
我想以编程方式触发按钮单击的原因:
我不能让对话框内的按钮自己提交按钮.在我的例子中,我创建了一个可重用的JavaScript控件,它包含了一个jQuery UI对话框.这个JS控件允许用户选择一个员工.但是,当员工被选中时,所需的行为并不总是如下:表单提交.(有时我可能想在页面上显示已挑选的员工,但尚未执行提交.)
额外细节:
这个问题并不是特定于ASP.NET,但是这里有一些额外的细节可以帮助解释我为什么要尝试这一切.我正在使用.NET 4.5编写ASP.NET Web Forms应用程序.我已经开始越来越多地为我的页面使用JavaScript了,但是在这个特定的页面上我想触发一个实际的回发到服务器,这样我就可以处理ASP.NET页面生命周期中的按钮点击事件并填充一个GridView.这就是为什么我希望能够使用JavaScript来点击一个asp:按钮,这反过来会导致表单提交.
最重要的是......自己尝试--->请参阅下面的jsFiddle链接.....
同样,这个问题并不是特定于ASP.NET的.我已经能够使用常规HTML和jQuery UI在JsFiddle上重新创建相同的问题.这是JsFiddle链接:
正如您在代码中看到的,我已经尝试使用通过jQuery DOM操作在表单内移动jQuery UI Dialog的"修复".这似乎无法解决问题.
谢谢!我感谢任何帮助!
HTML
<html>
<head></head>
<body>
<form action="http://www.google.com/index.html" method="post">
<input type="button" value="Open jQuery dialog" id="btnOpenDialog" />
<br /><br /><br />
The button below submits the form correctly if you click it.<br />
However, when I try to trigger click() event on this …Run Code Online (Sandbox Code Playgroud) 我正在使用ASP.NET Web API.我确实喜欢添加属性来指定API控制器的访问级别,如下所示:
[Authorize]
public IEnumerable<Activity> Get()
Run Code Online (Sandbox Code Playgroud)
到目前为止一切都那么好,但是当我使用角色时,概念就会分崩离析
[Authorize(Roles = "Manager")]
public IEnumerable<Activity> Get()
Run Code Online (Sandbox Code Playgroud)
我的用户可能在一段时间之前登录到系统,然后在某些时候他们点击了一个"被禁止"的资源.尝试再次登录的用户没有任何意义.由于他们的合法帐户无权访问该URL.但目前他们获得401(未经授权)而不是403(被禁止),就像他们使用错误的帐户登录一样.但是用户只有一个帐户,用户不会要求拥有属于其他人的帐户.
还有其他人处理过这个问题吗?有谁知道如何解决这一问题?我非常愿意编写代码来解决这个问题,但我目前无法从哪里开始.
我使用Visual Studio 2012和内置模板(在Add - > New Project下)创建一个面向.NET Framework 4.5的全新ASP.NET Web Forms Web应用程序项目.在默认情况下提供的Site.Master页面中,我看到一些包含页面上的CSS的标记,如下所示:
<webopt:BundleReference runat="server" Path="~/Content/css" />
Run Code Online (Sandbox Code Playgroud)
但是,我注意到我可能会使用其他代码而不是....
<%: Styles.Render("~/Content/css") %>
Run Code Online (Sandbox Code Playgroud)
当我查看渲染页面时,结果看起来是一样的.使用webopt:BundleReference和使用Styles.Render有什么区别?
这是其中一种比另一种更好的方法吗?
问题
在IE10上发生.(IE8工作正常.)
我编写了一些JavaScript代码,在20分钟不活动后,将浏览器重定向到另一个URL以指示用户已注销.通常这很好.但是我注意到一个奇怪的情况......如果用户的Windows计算机在此超时期间被锁定,那么看起来好像什么也没发生.
但是,当我查看浏览器的URL栏时,我可以清楚地看到该URL已经更新到自动注销页面.但是浏览器窗口的整个内容仍然显示旧页面!由于某种原因,浏览器窗口没有重新绘制/刷新.它看起来像是冻结了.
此时......如果我在页面上快速鼠标点击,则浏览器"醒来"并显示新内容.(似乎只有一次鼠标点击是不够的.你点击的速度越快,"唤醒"的速度就越快.)
理论
我最好的猜测是IE10浏览器在计算机锁定时停止重新绘制窗口.但是,我确实认为JavaScript引擎仍在运行,因为我在不同的时间间隔测试了另一个具有多个JS新Date()时间戳的场景,当屏幕最终重新绘制时,每个日期时间都是唯一的,显示实际发生的时间.
重新创建问题 - 版本1
我注意到这只发生在重定向到公司本地Intranet上的URL时.我不知道为什么会这样......但如果我有URL作为谷歌或雅虎的主页....那么我无法重新创建这个问题.它只是正常工作.让我想知道它是否可能是某种组策略/可信区域/内联网与互联网问题......
<!DOCTYPE HTML>
<html>
<head></head>
<body>
<script>
var url = 'http://IntranetWebApps.OurCompany.com/MyWebApp/Home'; // fails
//url = 'http://www.yahoo.com'; // this 'Internet' site works
//url = 'http://www.google.com'; // this 'Internet' site works
setTimeout(function () {
window.location.href = url;
}, 10000 // wait 10 seconds, then execute redirect
);
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
题
有没有人有任何想法如何解决这个问题,以便IE10窗口将永远重绘,而不是显示陈旧的内容?
javascript windows internet-explorer repaint internet-explorer-10
我使用Visual Studio 2012和内置模板(在Add - > New Project下)创建一个全新的ASP.NET Web Forms Web应用程序项目.在默认情况下提供的Site.Master页面中,我看到了一些针对JQuery的标记,它包含在下面.
考虑到以下标记,ASP.NET如何确定包含JQuery所需的路径?
<asp:ScriptManager runat="server">
<Scripts>
<%--Framework Scripts--%>
<asp:ScriptReference Name="MsAjaxBundle" />
<asp:ScriptReference Name="jquery" />
<asp:ScriptReference Name="jquery.ui.combined" />
<asp:ScriptReference Name="WebForms.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebForms.js" />
<asp:ScriptReference Name="WebUIValidation.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebUIValidation.js" />
<asp:ScriptReference Name="MenuStandards.js" Assembly="System.Web" Path="~/Scripts/WebForms/MenuStandards.js" />
<asp:ScriptReference Name="GridView.js" Assembly="System.Web" Path="~/Scripts/WebForms/GridView.js" />
<asp:ScriptReference Name="DetailsView.js" Assembly="System.Web" Path="~/Scripts/WebForms/DetailsView.js" />
<asp:ScriptReference Name="TreeView.js" Assembly="System.Web" Path="~/Scripts/WebForms/TreeView.js" />
<asp:ScriptReference Name="WebParts.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebParts.js" />
<asp:ScriptReference Name="Focus.js" Assembly="System.Web" Path="~/Scripts/WebForms/Focus.js" />
<asp:ScriptReference Name="WebFormsBundle" />
<%--Site Scripts--%>
</Scripts>
</asp:ScriptManager>
Run Code Online (Sandbox Code Playgroud)
我没有看到任何配置文件或代码将jquery解析为"〜/ Scripts/jquery-1.7.1.js".我看到一个packages.config文件,但它没有明确描述必须以某种方式计算的路径.
有谁知道如何在运行时解决JQuery的javascript文件的路径?
asp.net jquery webforms visual-studio-2012 bundling-and-minification