如何禁用按钮和jQuery code该按钮 - asp.net MVC-3 [英] how to disable button and Jquery code for that button - asp.net mvc-3

查看:88
本文介绍了如何禁用按钮和jQuery code该按钮 - 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;
    < D​​IV 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>    < D​​IV ID =结果>
        < D​​IV CLASS =正在加载的风格=显示:无;>检查....< / DIV>
    < / DIV>
    < / DIV>
    < /字段集>
    < BR />    < D​​IV ID =divRegisterInfo的风格=显示:无;>
        <&字段集GT;
        <传奇>用户< /传说>        < D​​IV CLASS =编辑标记>
            @ Html.LabelFor(型号=> model.FirstName)
        < / DIV>
        < D​​IV CLASS =主编场>
            @ Html.EditorFor(型号=> model.FirstName)
            @ Html.ValidationMessageFor(型号=> model.FirstName)
        < / DIV>        < D​​IV CLASS =编辑标记>
            @ Html.LabelFor(型号=> model.LastName)
        < / DIV>
        < D​​IV CLASS =主编场>
            @ Html.EditorFor(型号=> model.LastName)
            @ Html.ValidationMessageFor(型号=> model.LastName)
        < / DIV>        < D​​IV CLASS =编辑标记>
            @ Html.LabelFor(型号=> model.Email)
        < / DIV>
        < D​​IV CLASS =主编场>
            @ Html.EditorFor(型号=> model.Email)
            @ Html.ValidationMessageFor(型号=> model.Email)
        < / DIV>        < D​​IV CLASS =编辑标记>
            @ Html.LabelFor(型号=> model.Password)
        < / DIV>
        < D​​IV CLASS =主编场>
            @ Html.EditorFor(型号=> model.Password)
            @ Html.ValidationMessageFor(型号=> model.Password)
        < / DIV>
       &所述p为H.;
            <输入类型=按钮值=创建ID =btnRegister/>
        &所述; / P>        &所述p为H.;
            < D​​IV 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆