我正在使用Razor创建一个新项目asp.net mvc3,并希望将LogOn转换为ajax请求。
的HTML
@using (Ajax.BeginForm("LogOn", "Account", new AjaxOptions { HttpMethod="post", OnSuccess="LoginSubmitted"}))
{
}
控制者
if (Request.IsAjaxRequest())
{
return Json(new { ResultMessage = "Username or password provided is incorrect"});
}
else
{
ModelState.AddModelError("", "The user name or password provided is incorrect.");
}
其他所有内容保持不变。
首先,用Fiddler查看http响应,我注意到没有x-requested-with标头。所以我加
<input type="hidden" name="X-Requested-With" value="XMLHttpRequest" />
这似乎可行,但是现在我收到的是一个Json对象,该对象没有被解析,而是Google Chrome通过发送回一个application /
json文档将Json渲染到屏幕上。所有脚本均已就绪。
我也这样做了:
@using (Ajax.BeginForm("Submit", "home", new AjaxOptions { HttpMethod = "Post", OnSuccess="LoginSubmitted"}))
{
}
@section head
{
<script type="text/javascript">
function LoginSubmitted(res) {
alert(res.Message);
}
</script>
}
public ActionResult Submit(string id)
{
if (Request.IsAjaxRequest())
{
return Json(new { Message = "Logged In" } );
}
else
{
return View();
}
}
以我自己的创作形式,使用标准助手可以很好地工作。
发生了什么?
这是因为默认情况下,ASP.NET MVC 3使用jQuery和不引人注目的AJAX而不是MicrosoftAjax
*库。这意味着在编写时,Ajax.BeginForm
您需要在页面中包括适当的脚本:
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
并在您的web.config中确保您启用了兼容的JavaScript:
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
现在,您可以放心地丢弃MicrosoftAjax*
页面上的所有脚本引用(如果有的话),它们将不再使用。
有人这样说,我从未使用过任何Ajax.*
帮助者。我总是喜欢控制。所以我会写:
@using (Html.BeginForm("LogOn", "Account"))
{
}
然后使用jquery表单插件 AJAXify此表单:
$(function() {
$('form').ajaxForm(function(result) {
alert('form successfully submitted');
});
});
问题内容: 为什么这项工作有效- 但这不是- 第二种情况下的输出为。你能解释一下输出吗? 问题答案: 该方法没有返回值。它会在适当的位置更改列表,并且由于您没有将分配给任何变量,因此只是“迷失在空间” 我没有重载所有有问题的方法,但是概念应该很清楚。
我试图在我的Word文档中使用块,但我有一些问题。首先,当我在我的文档中声明一个块时,如果我不使用函数“cloneBlock”,结果会出现这样的情况: 也许我必须使用那个函数才能正常出现。但是我的主要问题是“删除块”不起作用。如果我不克隆块,生成的docx就会损坏。但是如果我克隆了这个块,函数“删除块”不会删除这个块,它会在我的最终docx文件中显示那个块内的信息。 这是我的代码: Docx模板:
问题内容: 我的Dockerfile创建一个目录,将其chown,然后再列出该目录。该目录仍归root用户所有。这是为什么? 这是Dockerfile: 这是“ docker build”的输出: Docker版本1.2.0,构建fa7b24f 主机运行Ubuntu 12.04,但具有3.13.0-36通用内核。 问题答案: 回答我自己的问题:它声明为卷。如果取出VOLUME指令,则将生效。 此外
问题内容: 我想在控制台中打印一些内容,以便对其进行调试。但是由于某种原因,我的Android应用程序中没有任何内容。 那我该如何调试呢? 问题答案: 在仿真器上,大多数设备都重定向到LogCat并使用进行打印。在非常旧的或自定义的Android版本上可能并非如此。 原版的: 没有控制台将消息发送到,因此消息丢失。当你使用来运行“传统” Java应用程序时,也会以同样的方式发生这种情况。 相反,你
我试图通过类名获取一些元素。以下是HTML文件: 在这里,我想得到的是,具有类="product-grid lid-leve-5"的div。这是我所做的: 这段代码成功地获取了id为“content”的div。然后当我尝试时, 它返回空值。我做错了什么?那个div的class属性的名字不就是“产品-网格边距-左-5”吗?有人能帮忙吗? 谢谢