如何禁用按钮和jQuery code该按钮 - asp.net MVC-3 [英] how to disable button and Jquery code for that button - asp.net mvc-3
问题描述
似乎有与jQuery code,但与动作控制器code ...
..not另一个问题我把在breakspoints控制器上并开始调试应用程序,它马上会到控制器,并试图在空值传递......请看看,让我知道... THX
公共类HomeController的:控制器
{
//
// 回家/
UsersRepository回购=新UsersRepository();
DBHelpers DB =新DBHelpers(); 公众的ActionResult指数()
{
VAR用户=新用户();
返回查看(用户);
} 公共ContentResult类型CheckLogin(用户checkuser)
{
checkuser =新用户();
如果(db.CheckUserLoginDetails(checkuser))
{
返回的内容(登录成功+ checkuser.Email);
}
其他
{
返回的内容(登录失败);
}
}
公共ContentResult类型注册(用户userRegister)
{
userRegister =新用户();
如果(db.InsertNewUSerDetails(userRegister))
{
返回的内容(注册成功:你的ID为:+ userRegister.UserID);
}
其他
{
返回的内容(有addding你,请重试问题);
}
}
}
=================
这是我的DBHelpers类
UsersRepository DB =新UsersRepository(); 公共BOOL CheckUserLoginDetails(用户用户)
{
(在db.EUsers从u哪里u.Email == user.Email&放大器; u.Password == user.password的选择u)的回报。任何();
} 公共BOOL InsertNewUSerDetails(用户NEWUSER)
{
NEWUSER =新用户();
尝试
{
VAR日期= DateTime.Now.Date;
newUser.JoiningDate =日期;
db.EUsers.Add(NEWUSER);
db.SaveChanges();
返回true;
}
赶上(DbEntityValidationException dbEX)
{
的foreach(在dbEX.EntityValidationErrors VAR validationerrors)
{
的foreach(在validationerrors.ValidationErrors VAR valerror)
{
Trace.TraceInformation(物业:{0}错误:{1},valerror.PropertyName,valerror.ErrorMessage);
}
}
返回false;
} }
}
,这里是我的用户类
公共类用户
{
[键]
公共虚拟INT用户名{搞定;组; } [必需的(=的ErrorMessage必需)]
公共虚拟字符串名字{获得;组; } [必需的(=的ErrorMessage必需)]
公共虚拟字符串名字{获得;组; } [必需的(=的ErrorMessage必需)]
[数据类型(DataType.EmailAddress)
公共虚拟字符串电子邮件{获得;组; } [必需的(=的ErrorMessage必需)]
[数据类型(DataType.Password)
公共虚拟字符串密码{搞定;组; } [数据类型(DataType.Date)
公共虚拟的DateTime JoiningDate {搞定;组; } }
==============
问题是,当我尝试运行应用程序,它直接将注册()动作,并传递空值...
请帮忙...
=================
这里是我的看法code ...
@model Temp1.Models.Users@ {
ViewBag.Title =指数;
}<脚本的src =@ Url.Content(〜/脚本/ jQuery的-1.5.1.js)类型=文/ JavaScript的>< / SCRIPT>
<脚本的src =@ Url.Content(〜/脚本/ jQuery的-1.5.1-vsdoc.js)类型=文/ JavaScript的>< / SCRIPT>@using(Html.BeginForm())
{
<&字段集GT;
< DIV ID =divLoginInfo>
< P>如果没有注册,请@ Html.ActionLink(注册,注册,家,新{@id =lnkRegister})LT; / P> @ Html.TextBoxFor(型号=> model.Email,新{@class =文本})
< BR />
@ Html.PasswordFor(型号=> model.Password,新{@class =文本}) &所述p为H.;
<输入类型=按钮值=登录ID =btnLogin/>
&所述; / P> < DIV ID =结果>
< DIV CLASS =正在加载的风格=显示:无;>检查....< / DIV>
< / DIV>
< / DIV>
< /字段集>
< BR /> < DIV ID =divRegisterInfo的风格=显示:无;>
<&字段集GT;
<传奇>用户< /传说> < DIV CLASS =编辑标记>
@ Html.LabelFor(型号=> model.FirstName)
< / DIV>
< DIV CLASS =主编场>
@ Html.EditorFor(型号=> model.FirstName)
@ Html.ValidationMessageFor(型号=> model.FirstName)
< / DIV> < DIV CLASS =编辑标记>
@ Html.LabelFor(型号=> model.LastName)
< / DIV>
< DIV CLASS =主编场>
@ Html.EditorFor(型号=> model.LastName)
@ Html.ValidationMessageFor(型号=> model.LastName)
< / DIV> < DIV CLASS =编辑标记>
@ Html.LabelFor(型号=> model.Email)
< / DIV>
< DIV CLASS =主编场>
@ Html.EditorFor(型号=> model.Email)
@ Html.ValidationMessageFor(型号=> model.Email)
< / DIV> < DIV CLASS =编辑标记>
@ Html.LabelFor(型号=> model.Password)
< / DIV>
< DIV CLASS =主编场>
@ Html.EditorFor(型号=> model.Password)
@ Html.ValidationMessageFor(型号=> model.Password)
< / DIV>
&所述p为H.;
<输入类型=按钮值=创建ID =btnRegister/>
&所述; / P> &所述p为H.;
< DIV ID =divShowRegistrationMessage> < / DIV>
&所述; / P> < /字段集> < / DIV>
}<脚本类型=文/ JavaScript的>
$('#btnLogin')。点击(函数(五){
VAR电子邮件= $('#电子邮件)VAL()。
VAR密码= $('#密码)VAL()。
VAR POSTDATA =
{
电子邮件:电子邮件,
密码:密码
};
$('载入')淡入(50)。
$阿贾克斯({ 网址:'@ Url.Action(CheckLogin,家),
数据:POSTDATA,
成功:函数(MSG){
VAR数据= msg.split(':');
$('#结果')的html(数据[0]);
$('载入')淡出(50)。
},
错误:功能(数据){ $('#结果)HTML(数据)。
$('载入')淡出(50)。
} });
亦即preventDefault();
}); $('#lnkRegister')。点击(函数(五){
亦即preventDefault();
$('#divLoginInfo')淡出(100)。
$('#divRegisterInfo')淡入(100)。
}); $('#btnRegister')。点击(函数(五){ VAR的firstName = $('#divRegisterInfo #FirstName')VAL()。
VAR的lastName = $('#divRegisterInfo #LastName')VAL()。
VAR电子邮件= $('#divRegisterInfo #Email')VAL()。
。VAR密码= $('#divRegisterInfo #password口令)VAL();
VAR POSTDATA =
{
名字:名字,
名字:名字,
电子邮件:电子邮件,
密码:密码
}; $(#divShowRegistrationMessage)HTML('Pleaes稍候...')。
亦即preventDefault();
$阿贾克斯({
输入:POST
网址:'@ Html.Action(注册,家),
数据:POSTDATA,
成功:函数(MSG){
$('#divShowRegistrationMessage)HTML(MSG);
},
错误:功能(数据){
$('#divShowRegistrationMessage')的html(数据)。
}
}); });
< / SCRIPT>
您有一个尾随,
这里这可能会导致成JavaScript错误:
VAR POSTDATA =
{
名字:名字,
名字:名字,
电子邮件:电子邮件,
密码:密码,//< - 删除此逗号
};
JavaScript的错误成果转化为不被执行,这是电子preventDefault()的下一行;
,因而形式进行正常的提交,而不是一个AJAX提交。 IIRC某些浏览器实际上可能会容忍这样的,但其他人没有。不管怎么说,这是无效的JavaScript和需要修复。
there seems to be another problem ..not with JQuery code but with Action controller code...
i am putting the breakspoints on controllers and start debugging the app, its straight away going to controller and trying to pass in the null values ...please have a look and let me know... thx
public class HomeController : Controller
{
//
// GET: /Home/
UsersRepository repo = new UsersRepository();
DBHelpers db = new DBHelpers();
public ActionResult Index()
{
var users = new Users();
return View(users);
}
public ContentResult CheckLogin(Users checkuser)
{
checkuser = new Users();
if (db.CheckUserLoginDetails(checkuser))
{
return Content("Login Successful:" + checkuser.Email);
}
else
{
return Content("Login UnSuccessful");
}
}
public ContentResult Register(Users userRegister)
{
userRegister = new Users();
if (db.InsertNewUSerDetails(userRegister))
{
return Content("Registration Successful : your ID is : " + userRegister.UserID);
}
else
{
return Content("There was a problem addding you, please try again");
}
}
}
=================
here is my DBHelpers class
UsersRepository db = new UsersRepository();
public bool CheckUserLoginDetails(Users user)
{
return (from u in db.EUsers where u.Email == user.Email & u.Password == user.Password select u).Any();
}
public bool InsertNewUSerDetails(Users newUser)
{
newUser = new Users();
try
{
var date = DateTime.Now.Date;
newUser.JoiningDate = date;
db.EUsers.Add(newUser);
db.SaveChanges();
return true;
}
catch (DbEntityValidationException dbEX)
{
foreach (var validationerrors in dbEX.EntityValidationErrors)
{
foreach (var valerror in validationerrors.ValidationErrors)
{
Trace.TraceInformation("Property: {0} Error: {1}", valerror.PropertyName, valerror.ErrorMessage);
}
}
return false;
}
}
}
and here is my Users class
public class Users
{
[Key]
public virtual int UserID { get; set; }
[Required(ErrorMessage="Required")]
public virtual string FirstName { get; set; }
[Required(ErrorMessage = "Required")]
public virtual string LastName { get; set; }
[Required(ErrorMessage = "Required")]
[DataType(DataType.EmailAddress)]
public virtual string Email { get; set; }
[Required(ErrorMessage = "Required")]
[DataType(DataType.Password)]
public virtual string Password { get; set; }
[DataType(DataType.Date)]
public virtual DateTime JoiningDate { get; set; }
}
============== problem is when i try to run the application, its directly going to Register() action and passing the null values ...
please help...
=================
here is my View Code...
@model Temp1.Models.Users
@{
ViewBag.Title = "Index";
}
<script src="@Url.Content("~/Scripts/jquery-1.5.1.js") type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery-1.5.1-vsdoc.js") type="text/javascript"></script>
@using (Html.BeginForm())
{
<fieldset>
<div id="divLoginInfo">
<p>if not registered, please @Html.ActionLink("Register", "Register", "Home", new { @id = "lnkRegister" })</p>
@Html.TextBoxFor(model => model.Email, new { @class = "text" })
<br />
@Html.PasswordFor(model => model.Password, new { @class = "text" })
<p>
<input type="button" value="Login" id="btnLogin" />
</p>
<div id="Result">
<div class="Loading" style="display:none;"> Checking....</div>
</div>
</div>
</fieldset>
<br />
<div id="divRegisterInfo" style="display:none;">
<fieldset>
<legend>Users</legend>
<div class="editor-label">
@Html.LabelFor(model => model.FirstName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.FirstName)
@Html.ValidationMessageFor(model => model.FirstName)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.LastName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.LastName)
@Html.ValidationMessageFor(model => model.LastName)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Email)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Email)
@Html.ValidationMessageFor(model => model.Email)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Password)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Password)
@Html.ValidationMessageFor(model => model.Password)
</div>
<p>
<input type="button" value="Create" id="btnRegister" />
</p>
<p>
<div id="divShowRegistrationMessage">
</div>
</p>
</fieldset>
</div>
}
<script type="text/javascript">
$('#btnLogin').click(function (e) {
var email = $('#Email').val();
var Password = $('#Password').val();
var postdata =
{
"Email": email,
"Password": Password
};
$('.Loading').fadeIn(50);
$.ajax({
url: '@Url.Action("CheckLogin","Home")',
data: postdata,
success: function (msg) {
var data = msg.split(':');
$('#Result').html(data[0]);
$('.Loading').fadeOut(50);
},
error: function (data) {
$('#Result').html(data);
$('.Loading').fadeOut(50);
}
});
e.preventDefault();
});
$('#lnkRegister').click(function (e) {
e.preventDefault();
$('#divLoginInfo').fadeOut(100);
$('#divRegisterInfo').fadeIn(100);
});
$('#btnRegister').click(function (e) {
var firstName = $('#divRegisterInfo #FirstName').val();
var lastName = $('#divRegisterInfo #LastName').val();
var email = $('#divRegisterInfo #Email').val();
var password = $('#divRegisterInfo #Password').val();
var postdata =
{
"FirstName": firstName,
"LastName": lastName,
"Email": email,
"Password": password
};
$("#divShowRegistrationMessage").html('Pleaes wait...');
e.preventDefault();
$.ajax({
type: 'POST'
url: '@Html.Action("Register","Home")',
data: postdata,
success: function (msg) {
$('#divShowRegistrationMessage').html(msg);
},
error: function (data) {
$('#divShowRegistrationMessage').html(data);
}
});
});
</script>
You have a trailing ,
here which might result into a javascript error:
var postdata =
{
"FirstName": firstName,
"LastName": lastName,
"Email": email,
"Password": password, // <-- remove this comma
};
The javascript error results into the next line not being executed which is e.preventDefault();
and thus the form performs a normal submit and not an AJAX submit. IIRC some browsers actually might tolerate this but others not. Anyway, it's invalid javascript and needs to be fixed.
这篇关于如何禁用按钮和jQuery code该按钮 - asp.net MVC-3的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!