Ajax.BeginForm返回方法OnSuccess
在MVC3里面——程序集 System.Web.Mvc.dll, v4.0.30319有这么一个Ajax.BeginForm异步登录验证的类型,我们在下面给出一个例子:
在登录页面Logion.cshtml。使用@using (Ajax.BeginForm("Login", "Home", new AjaxOptions { HttpMethod = "Post", OnSuccess = "tips", OnBegin = "return ValidateLog()" })){提交Form内容},HttpMethod="提交方式",OnBegin="return validateLog()"是开始提交前,对Form表单的js验证。我们直接在javascript里面写validateLog()的js验证函数就可以了。OnSuccess = "tips"是Form表单成功提交到这个控制器后,然后再根据页面上的javascript函数tips(data)和它的返回值data,判断控制器里面回传过来的JsonResult值,是"true"还是"flase"。
[HttpPost]
public JsonResult Login(FormCollection collection){
string userName = collection["UserName"];
string passWord = collection["passWord"];
//经过数据库判断用户是否存在
//该用户有何权限
//用户和权限保存Session等等处理
JsonResult json = new JsonResult();
json.Data = new Json{result="true"}; //给JsonResult对象赋值,登录结果是否通过
return json //返回json值
}
1、用户登录页面Logion.cshtml
@{
ViewBag.Title = "登录";
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<link href="/Style/index.css" rel="stylesheet" type="text/css" />
<title>登录</title>
<script src="/Scripts/jquery-1.5.1.min.js" type="text/javascript"></script>
<script src="/Scripts/PleatedEffects.js" type="text/javascript"></script>
<script src="/Scripts/RenzoManage.js" type="text/javascript"></script>
<script src="/Scripts/MicrosoftAjax.js" type="text/javascript"></script>
<script src="/Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script>
<script src="/Scripts/jquery.unobtrusive-ajax.min.js" type="text/javascript"></script>
<script type="text/javascript">
//登录验证
function ValidateLog() {
if (document.getElementById('userName').value == "" || document.getElementById('userName').value.length == 0) {
alert('用户名不能为空');
document.getElementById('userName').focus();
return false;
}
if (document.getElementById('passWord').vaule == "" || document.getElementById('passWord').value.length == 0) {
alert('密码不能为空');
document.getElementById('passWord').focus();
return false;
}
}
//登录回调函数
function tips(data) {
try {
if (data.result == "false") {
alert("用户名和密码错误");
}
else {
location.href = '/Home/Index';
}
} catch (e) {
alert('异常错误');
}
}
</script>
</head>
<body>
<div id="top">
<div class="topbg">
<div class="main_logo_wrap">
<a href="#" class="logo" target="_blank" title="易乐国际">易乐国际</a></div>
<div class="nav">
<div class="floatright">
<a href="#" class="font01 marginright45 btn_time_a">@(DateTime.Now.GetDateTimeFormats('D')[1].ToString())</a>
</div>
</div>
</div>
</div>
<div id="content" class="c">
<div class="rightcontents">
<div class="righttopbg right_wrap">
<div class="righttopword">
您所在的位置: <a href="#">用户登录</a>
</div>
</div>
<div class="righttable">
@using (Ajax.BeginForm("Login", "Home", new AjaxOptions { HttpMethod = "Post", OnSuccess = "tips", OnBegin = "return ValidateLog()" }))
{
<table border="0" cellpadding="0" cellspacing="0" class="chaxunbiaoge search_wh">
<tr>
<td height="55px" width="80px" align="right">
用户名:
</td>
<td width="175px">
<input type="text" name="userName" id="userName" class=" biaogechaxunkuang" tabindex="1"/>
</td>
<td>
<span class="colore6080d marginleft10">*</span> <span class="spanUserName"></span>
</td>
</tr>
<tr>
<td height="55px" align="right">
密码:
</td>
<td>
<input type="password" name="passWord" id="passWord" class=" biaogechaxunkuang" tabindex="2"/>
</td>
<td>
<span class="colore6080d marginleft10">*</span><span class="spanPassWord"></span>
</td>
</tr>
<tr>
<td height="55px" align="right">
</td>
<td>
<input name="btnlogin" type="submit" class="marginleft10 btn_dl" value="登录" tabindex="3" style="margin-top: 14px;" />
</td>
<td>
</td>
</tr>
</table>
}
</div>
</div>
</div>
<div class=" clearfloat">
</div>
<div id="bottom">
<div class="bottomwenzi">
<span class="floatright">后台管理系统</span></div>
</div>
</body>
</html>
2、用户登录控制器
///<summary>
///用户登陆
///</summary>
///<param name="collection"></param>
///<returns></returns>
[HttpPost]
public JsonResult Login(FormCollection collection)
{
string userName = collection["userName"];
string passWord = collection["passWord"];
JsonResult json = new JsonResult();
try
{
Users user = UserManage.GetUser(userName, passWord);
if (user != null)
{
Session["LoginUser"] = user;
Roles role = AuthorityManage.GetRoleById(Convert.ToInt32(user.RoleID));
Session["AllowAuthority"] = role.AllowAuthority;
//Session["AllowMenu"] = role.AllowMenu; //2013116
Session["RolesInfo"] = role;
int i = LogRecordsManage.Insert(new LogRecords() { LogMessage = role.Name + user.Username + "于" + DateTime.Now.ToString() + "登录", OperateID = user.ID, OperateTime = DateTime.Now, OperateType = 8 });
//json.Data = new { result = "true" };
json.Data = new { result = "false" };
}
else
{
json.Data = new { result = "false" };
}
}
catch (Exception ex)
{
Logs.AppLogs log = new Logs.AppLogs("Casino", "Login", userName, 2, ex.Message);
log.Insert();
CasinoWeb.Helper.LogMessage.SaveError(ex);
}
return json;
}
Ajax.BeginForm返回方法OnSuccess的更多相关文章
- ajax的使用:(ajaxReturn[ajax的返回方法]),(eval返回字符串);分页;第三方类(page.class.php)如何载入;自动加载函数库(functions);session如何防止跳过登录访问(构造函数说明)
一.ajax例子:ajaxReturn("ok","eval")->thinkphp中ajax的返回值的方法,返回参数为ok,返回类型为eval(字符串) ...
- Ajax.BeginForm 不执行OnSuccess
今天用MVC做了一个表单提交,使用Ajax.BeginForm ,但是碰到一个奇怪的问题OnSuccess回调函数不执行.后来经过多次尝试才发现要引用两个东西 1.<script src=&qu ...
- MVC4中Ajax.BeginForm OnSuccess 不执行以及控制器返回JsonResult 提示下载的原因
这几天学习MVC的过程中,在学习Ajax.BeginForm时,一直遇到2个问题: 一. Ajax.BeginForm OnSuccess事件不执行 二.提交表单后,浏览器不识别json字符串,提示下 ...
- Ajax.BeginForm方法 参数
感谢博主 http://www.cnblogs.com/zzgblog/p/5454019.html toyoung 在Asp.Net的MVC中的语法,在Razor页面中使用,替代JQuery的Aja ...
- MVC验证09-使用MVC的Ajax.BeginForm方法实现异步验证
原文:MVC验证09-使用MVC的Ajax.BeginForm方法实现异步验证 MVC中,关于往后台提交的方法有: 1.Html.BeginForm():同步 2.Ajax.BeginForm():异 ...
- Ajax.BeginForm提示不支持live属性或方法的错误
解决: 在nuget下载最新版本的jquery.unobtrusive-ajax.min.js文件 Ajax异步请求: 引用JS: <script type="text/javascr ...
- 取代Ajax.BeginForm的ajax使用方法
原文:取代Ajax.BeginForm的ajax使用方法 一.前提概要 Asp.net core中已经取消了Ajax.BeginForm,也不会计划出ajax tag helper,所以得利用插件jq ...
- 在使用Ajax请求返回json数据的时候IE浏览器弹出下载保存对话框的解决方法
在使用Ajax请求返回json数据的时候IE浏览器弹出下载保存对话框的解决方法 最近在做一个小东西,使用kindeditor上传图片的时候,自己写了一个上传的方法,按照协议规则通过ajax返回json ...
- MVC Ajax.BeginForm重复提交解决方法
mvc使用MVC Ajax.BeginForm提交的时候有重复提交结果的时候检查相关js文件引用情况, 其中mvc4注意 1 2 3 4 @Scripts.Render("~/bundles ...
随机推荐
- 【转】周末班LR笔记总结—新手入门必备
本来想上传文件的,上传半天没反应,只有这样了,图片不知道能显示不. 上午 学到2012.1.13 七天课 第一天(入门)二.三.四天(VUGEN脚本) 五天(Controller)六天(Analyse ...
- SQL Server 2012 中 Update FROM子句
首先说明一下需求以及环境 创建Table1以及Table2两张表,并插入一下数据 USE AdventureWorks2012; GO IF OBJECT_ID ('dbo.Table1', 'U') ...
- .Net获取iis版本
有以下办法获取iis版本. DirectoryEntry getEntity = new DirectoryEntry("IIS://localhost/W3SVC/INFO"); ...
- Objective-C 学习笔记(Day 3,上)
------------------------------------------- 类方法 ①类方法: + 开头的方法(定义的过程形式和对象方法一样,只不过 + 开头,这是唯一的 ...
- FreeMarker语法2
FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主要由如下4个部分组成: 1,文本:直接输出的部分 2,注释:<#-- ... -->格式部分,不会输 ...
- Linux内核Radix Tree(三):API介绍
1. 单值查找radix_tree_lookup 函数radix_tree_lookup执行查找操作,查找方法是:从叶子到树顶,通过数组索引键值值查看数组元素的方法,一层层地查找slot.其列 ...
- 转.....IOC 和DI
引述:IoC(控制反转:Inverse of Control)是Spring容器的内核,AOP.声明式事务等功能在此基础上开花结果.但是IoC这个重要的概念却比较晦涩隐讳,不容易让人望文生义,这不能不 ...
- css文本换行你所不知道的技巧
前言:这是最近翻译的一篇文章 我在header标签开头忘里边加入一个span标签的时候,有一点小问题.我总是想确保在span标签之前能够换行.明确地讲,在标签前边加入<br> 并没有什么错 ...
- 在linux下安装memcacheq
#!/bin/bash mkdir ~/build cd ~/build wget http://download.oracle.com/berkeley-db/db-5.1.19.tar.gz .t ...
- Tips of Python!
Tips of Python!(Python 2.7) (不定期更新中-) 1. raw_input() 和 input(): raw_input() 将输入原封不动的保存为一个字符串 输入 1 + ...