我想在ASP.NET MVC中使用部分视图和AJAX调用,这是我第一次使用它.我只是想搜索一下我之前应该知道的是否有什么特别之处,而且我很好奇的是,是否有任何应该设置或与AJAX调用相关的特殊属性?像[ChildActionOnly]或的东西[HttpGet]
这是一个ASP.NET MVC 3异常消息.它说的是什么?我该怎么办?
好的,我有这个代码:
@{
Layout = "~/_Layout.cshtml";
Page.Title = "Home";
}
@section meta{
<meta name="keywords" content="" />
<meta name="description" content="" />
}
<h2>Html Content Here</h2>
@section footer {
<script src="http://code.jquery.com/jquery-latest.min.js" charset="utf-8"></script>
<script type="text/javascript">
$(document).ready(function() {
});
</script>
}
Run Code Online (Sandbox Code Playgroud) 我无法理解我可以从Url.Content()ASP.NET MVC中的方法获得的好处.例如,你看src='@Url.Content("~/Contents/Scripts/jQuery.js")'.我为什么要用它?使用它可能有什么理由?使用简单的旧简单引用有什么好处,优点等src='/scripts/jquery.js?
更新:根据答案,我想知道除了处理虚拟文件夹之外是否还有其他原因可以使用它?因为我没有看到过多使用虚拟应用程序(当然这并不意味着它没有被那么多使用).
我看到JavaScript中某些对象的某些属性以双下划线开头.例如,像__defineGetter__或__defineSetter__或__proto__.它是一个常规定义的ECMAScript规范吗?或者它可能只是开发人员社区的惯例?
考虑这个简单的控制器
Porduct product = new Product(){
// Creating a product object;
};
try
{
productManager.SaveProduct(product);
return RedirectToAction("List");
}
catch (Exception ex)
{
ViewBag.ErrorMessage = ex.Message;
return View("Create", product);
}
Run Code Online (Sandbox Code Playgroud)
现在,在我Create看来,我想检查ViewBag对象,看它是否有Error属性.如果它有error属性,我需要在页面中注入一些JavaScript,以向我的用户显示错误消息.
我创建了一个扩展方法来检查:
public static bool Has (this object obj, string propertyName)
{
Type type = obj.GetType();
return type.GetProperty(propertyName) != null;
}
Run Code Online (Sandbox Code Playgroud)
然后,在Create视图中,我写了这行代码:
@if (ViewBag.Has("Error"))
{
// Injecting JavaScript here
}
Run Code Online (Sandbox Code Playgroud)
但是,我收到此错误:
无法对空引用执行运行时绑定
任何的想法?
如果将两个或多个事件处理程序附加到HTML元素,它们将一个接一个地执行.但是,如果要根据第一个处理程序中检查的条件停止后续事件处理程序,那么您应该做什么?
例如:
<div id='target'>
</div>
<p id='result'>
</p>
Run Code Online (Sandbox Code Playgroud)
如果第一个处理程序被取消,我想取消第二个处理程序.
$(function() {
var target = $('#target'),
result = $('#result');
target.click(function(e) {
result.append('first handler<br />');
// Here I want to cancel all subsequent event handlers
});
target.click(function(e) {
result.append('second handler<br />');
});
});
Run Code Online (Sandbox Code Playgroud)
你可以在这里看到小提琴.
PS:我知道这会e.preventDefault()阻止HTML元素的默认操作(例如,阻止因链接点击而发送HTTP GET请求),并e.preventPropagation()导致事件传播到DOM树中的父元素.我也知道可以使用中间变量,在第一个处理程序中将其设置为true,并在后续处理程序中检查它.但是我想看看是否有一个更整洁,更复杂的解决方案来解决这个问题.
考虑这个JSON响应:
[{
Name: 'Saeed',
Age: 31
}, {
Name: 'Maysam',
Age: 32
}, {
Name: 'Mehdi',
Age: 27
}]
Run Code Online (Sandbox Code Playgroud)
这适用于少量数据,但是当您想要提供大量数据(例如数千条记录)时,以某种方式阻止响应JSON中的属性名称重复似乎是合乎逻辑的.
我用Google搜索了这个概念(DRYing JSON),令我惊讶的是,我没有找到任何相关的结果.当然,一种方法是使用简单的自制算法压缩JSON,然后在使用它之前在客户端解压缩它:
[['Name', 'Age'],
['Saeed', 31],
['Maysam', 32],
['Mehdi', 27]]
Run Code Online (Sandbox Code Playgroud)
但是,最好的做法是比每个试图重新发明轮子的开发人员更好.你们有没有看到一个众所周知的广为接受的解决方案?
我知道,为了处理输入字段中的键盘事件,您可以使用:
$('input').keyup(function(e){
var code = e.keyCode // and 13 is the keyCode for Enter
});
Run Code Online (Sandbox Code Playgroud)
但是,现在,我有一些div和li元素,我没有form元素,我的元素都没有被认为是表单元素,也没有一个接受焦点或标签和类似的东西.
但是现在我需要处理div元素中的keyup(或者keydown,或者keypress无关紧要)事件.我试过了:
$('div#modal').keyup(function(e){
if (e.keyCode == 13)
{
$('#next').click(); // Mimicking mouse click to go to the next level.
}
});
Run Code Online (Sandbox Code Playgroud)
但问题是,它不起作用.我该怎么办?
按下Ctrl+Shift+Del会在几乎所有浏览器中显示删除对话框(我已经测试过IE,Firefox和Chrome),您可以在其中删除Cookie,表单数据,密码等.
Firefox和Chrome工作得很好.然而,IE就像总是以不同的方式行事.它显示了所有内容都被删除的消息,但它实际上保留了很多东西.
为了测试它,我只需登录一个网站,以便在我的浏览器上设置其身份验证cookie.然后我删除所有cookie.然后我请求该站点的私人页面(仅供登录用户使用).你猜怎么着?在Chrome和Firefox中,我被重定向到登录页面,但在IE中,我仍然登录.
有任何想法吗?
为开发人员提供的新API之一是Geolocation API.正如规范中所定义的那样,任何浏览器在向冲浪网站透露其地理位置时都应获得用户的明确许可.但是,也有人说用户可以随时撤销给定的许可.我几乎在Chrome和Firefox的所有地方搜索过,我找不到任何撤销授权的地方.有谁知道我该怎么做?(在Contacts API中也是这种情况)
javascript ×3
asp.net-mvc ×2
jquery ×2
aop ×1
attributes ×1
compression ×1
cookies ×1
dry ×1
dynamic ×1
events ×1
exception ×1
firefox ×1
http ×1
json ×1
keyboard ×1
login ×1
null ×1
razor ×1
viewbag ×1
w3c ×1