有没有人经历过将实际业务应用程序从ASP.NET Web表单转换为MVC的过程?转型有多痛苦?你会说它总体上值得吗?
我试图弄清楚是否值得花时间将应用程序转换为MVC以提高性能.
我有一个现有的网站,我想创建一个更适合的移动版本.例如,主站点使用下拉菜单,我们都知道这些都是移动设备上的失败.
如果我检测到来自移动浏览器的请求,我想重定向到我的移动版本(它将是当前网站的子域).所以当他们谷歌的东西来到我的网站时,他们会自动看到移动版本(就像维基百科一样).
ASP.NET提供了一种简单的方法吗?如果没有,我该怎么办?
我在我的网站上有一个可用性问题.我有一组标签,每个标签都包含一个表格.当您单击选项卡链接时,它会将焦点放在选项卡内容正文中的第一个文本框中.面向鼠标的人喜欢这个"功能".问题是面向键盘的用户使用键盘上的TAB键来浏览选项卡.他们在他们想要查看的选项卡上按Enter键,点击事件触发并显示选项卡,但焦点是文本框,完全调整其Tab键顺序.因此,当他们再次点击标签时,他们想要转到屏幕上的下一个标签,但由于焦点已移动到表单中,因此无法使用键盘轻松访问下一个标签.
因此,在click事件中,我需要确定他们是否用鼠标按钮实际点击了它.这可能吗?我的第一次尝试是这样的:
$("#tabs li a").click(function(e) {
var tab = $(this.href);
if(e.keyCode != 13)
$("input:first", tab).focus();
});
Run Code Online (Sandbox Code Playgroud)
但keyCode总是0. which财产也总是0.请帮忙!
我想使用ADO.net从Excel文件中提取一些数据.这个过程在互联网上有很好的记录.我的问题是我的文件已被用户上传,因此仅作为内存中的字节数组存在.出于安全性和性能原因,我宁愿不将此文件写入磁盘.
有没有办法构建连接到字节数组的连接字符串?或者可能将该数组暴露为实际存储在内存中的文件(如我猜的RAM磁盘)?
我正在研究一些旧的AJAX代码,这些代码是在jQuery之前的黑暗日子里编写的.奇怪的是,它一直运作良好多年,直到今天它突然停止触发回调.这是基本代码:
var xml = new XMLHttpRequest(); // only needs to support Firefox
xml.open("GET", myRequestURL, true);
xml.onreadystatechange = function() { alert ('test'); };
xml.send(null);
Run Code Online (Sandbox Code Playgroud)
检查Firebug控制台,发送请求时无需担心,并且它从请求URL接收到正确的XML,但该onreadystatechange功能根本不起作用.没有javascript错误或系统中发生任何其他奇怪的事情.
我希望我可以使用jQuery重写所有内容,但我现在没有时间.什么可能导致这个问题?
进一步的更新 - 我已经能够在不同的浏览器(FFx 3.0)中测试我的代码并且它在那里工作,所以它一定是我的浏览器的问题.我在Vista上运行Firefox 3.5b4,我现在已经尝试过,所有我的插件都被禁用而没有运气.它仍然真的让我烦恼,因为我昨天在这个网站上工作(使用相同的浏览器设置)并且根本没有问题...
实际上我只是回顾一下我的Addons窗口,看到Firebug仍然启用了.如果我禁用Firebug,它可以完美运行.如果我启用它,它就会崩溃.Firebug版本1.40.a31
我有一些像这样的消息元素......
<span class="error message">Whoops! Don't forget your name.</span>
Run Code Online (Sandbox Code Playgroud)
和...
<span class="success message">All done! Thank you very much.</span>
Run Code Online (Sandbox Code Playgroud)
您会注意到两个类正在应用于单个span元素.这是有效的标记.如何选择具有这两个类的元素?
注意:我不希望所有具有包含"message"的class属性的元素.我需要既有"错误"又有"消息"的元素(没有别的).
当我打字时,我怎么能在移动时删除输入文本框的空格?
我最近一直在考虑这个问题,我想从这个精彩的社区得到一些反馈.假设用户在登录时想要被记住是否安全?如果他们使用公共计算机,是否可以安全地假设他们在离开之前足够智能注销?
我们有遗留的字符代码,我们希望将其作为数字存储在新系统中.为了提高开发人员的代码的可读性和一般理解,我想做这样的枚举......
Public Enum Status As Short
Open = AscW("O")
Closed = AscW("C")
Pending = AscW("P")
EnRoute = AscW("E")
End Enum
Run Code Online (Sandbox Code Playgroud)
通过这种设置,代码将是可读的(想象If Record.Status = Status.Open),但是这些值将作为小数字存储在数据库中,因此它将是高效的.但是......我是VB.NET的人,但是每个人都想用C#编写代码,所以我需要在C#中使用这种结构.
谷歌搜索后,我发现的一般相当于.NET AscW是Convert.ToInt32("C").当我尝试在枚举中使用该语句时,我得到编译器错误"Constant Expression Required".
我怎么能在C#中做到这一点?有没有更好的办法?
在我的Web应用程序中,用户可以输入文本数据.此数据可以显示给其他用户,原始作者也可以返回并编辑他们的数据.我正在寻找安全地逃避这些数据的正确方法.
我只是在进行sql清理,因此所有内容都会在读取时存储.假设我在数据库中有"似曾相识".或者,更加极端,一个<script>标签.这可能是有效的,甚至不是恶意的输入.
我正在htmlentities()出路以确保一切都被逃脱.问题是html和输入字段对待事物的方式不同.我想确保它在HTML中是安全的,但是作者在编辑文本时会看到他们在输入字段中输入的内容.我也使用jQuery动态填充表单字段和数据.
如果我这样做:
<p><?=htmlentities("déjà vu");?></p>
<input type=text value="<?=htmlentities("déjà vu");?>">
Run Code Online (Sandbox Code Playgroud)
页面源放入déjà vu两个地方(我不得不反击或者你会看到"似曾相识"!)问题是输出<p>是正确的,但输入只显示转义文本.如果用户重新提交表单,他们会双重逃避并破坏他们的输入.
我知道我仍然需要清理进入该领域的文本,否则你可以结束价值报价并做坏事.我找到的唯一解决方案就是这个.我再次使用jQuery.
var temp = $("<div></div>").html("<?=htmlentities("déjà vu");?>");
$("input").val(temp.html());
Run Code Online (Sandbox Code Playgroud)
这有效,因为它导致div将转义的文本作为编码字符读取,然后jquery将这些编码的字符复制到输入标记,并进行适当保留.
所以我的问题是:这仍然是安全的,还是某处有安全漏洞?更重要的是,这是唯一/正确的方法吗?我是否遗漏了有关html和字符编码如何工作的问题,这使得这个问题难以解决?
这实际上是错误的,我过度简化了我的例子,以至于它不起作用.问题实际上是因为我使用jQuery的val()将文本插入到字段中.
<input>
<script>$("input").val("<?=htmlentities("déjà vu");?>");</script>
Run Code Online (Sandbox Code Playgroud)
这样做的原因是表单是动态的 - 用户可以随意添加或删除字段,因此它们是在页面加载后生成的.
所以似乎jQuery正在逃避数据进入输入,但它还不够好 - 如果我自己不做任何事情,用户仍然可以放入</script>标签,查杀代码并插入恶意代码.但是这里有另一个论点要做.由于只有原作者才能在输入框中看到文字,我是否应该打扰?基本上他们可以执行XSS攻击的唯一人就是他们自己.