MVC基本应用程序不起作用

时间:2017-11-19 19:42:57

标签: c# jquery asp.net-mvc

我在网上创造了一个小提琴。如果我输入'Manoj'作为用户名& 'kumar'作为密码并单击Login按钮,然后我应该收到一条警告消息'Manoj kumar'。但这不会发生。我发送的是用户名&密码到控制器操作方法,但它们没有在控制器中收到。请告诉我我做错了什么。

            $('.submit').click(function(){
                if($('form').valid()) {
                    $.ajax({
                        url: '@Url.RouteUrl(new{ action="GetUserInfo", controller="Home"})',
                        data: JSON.stringify({userName: $("#txtUserName").val(), password: $("#txtPassword").val()}),
                            type: 'POST',
                            dataType: 'json',
                            contentType: "application/json; charset=utf-8",
                            success: function(resp) {
                            if(resp != null){

                                if(resp.IsValidUser == true){
                                    alert(resp.FullName);
                                }   
                                else{
                                    alert("Invalid Username or Password");
                                }

                            }

                        },

[HttpPost]
    public ActionResult GetUserInfo(string userName,string password)
    {

        ActionResult result = null;
        bool isValidUser = false;
        string fullName = string.Empty;
        if(userName == "Manoj" && password == "kumar")
        {
            isValidUser = true;
            fullName = userName +' ' + password;
        }
        else    {
            fullName = userName + ' '+password;
        }

        var resultObj = new {IsValidUser = isValidUser , FullName = fullName};

        result = Json(resultObj);

        return result;
    }

请查看以下链接。

https://dotnetfiddle.net/KrWqwE

2 个答案:

答案 0 :(得分:0)

您的代码可以简化为;

$.post('@Url.Action("Action", "Controler")',dataToPost).done(function(){
  //success
}).fail(function(){
  //fail
});

摆脱application/json部分。而不是点击事件,你可以使用onsubmit事件。

答案 1 :(得分:0)

确保您的参考脚本上有Jquery Validate,因为form.valid()将在其上:

<script src="/Scripts/jquery.validate.js"></script>

或点击此处查看CDN:JQuery Validate

它返回false,这就是为什么它不会进入你的控制器。

<强>更新

确保将代码放在文档中并正确格式化ajax函数的闭包或结束括号:

 <script type="text/javascript">

    $(document).ready(fncInitialize);

    function fncInitialize() {
        $('#frmSubmit').click(function() {               
            if ($('form').valid()) {
                $.ajax({
                    url: '@Url.RouteUrl(new{ action="GetUserInfo", controller="Home"})',
                    data: JSON.stringify({ userName: $("#txtUserName").val(), password: $("#txtPassword").val() }),
                    type: 'POST',
                    dataType: 'json',
                    contentType: "application/json; charset=utf-8",
                    success: function(resp) {
                        if (resp != null) {

                            if (resp.IsValidUser == true) {
                                alert(resp.FullName);
                            } else {
                                alert("Invalid Username or Password");
                            }
                        }
                    }
                });
            }
        });
    }

</script>

这是我的输入类型提交的代码:

<input type="submit" value="Create" id="frmSubmit" />