Skip to main content
 首页 » 编程设计

javascript之使用ajax将数据从文本框发送到asp.net mvc 5 Controller

2024年06月20日42insus

我需要一些帮助。我使用带有 JavaScript、jQuery、Ajax 的 ASP.NET MVC5 编写小应用程序......我无法将数据从 javascript 发送到 MVC Controller 并更改模型。

View 模型

public class MyViewModel 
{ 
//... 
    public string SearchString { get; set; } 
    public int? FirstInt { get; set; } 
    public int? SecondInt { get; set; } 
} 

Javascript

    function keystroke() { 
        var a = 0, b = 0; 
        $('#search').keyup(function (event) { a = 1; }); 
 
        $('#search').keydown(function (event) { b = 1; }); 
 
        $("#search").keypress(function (event) { 
            if (e.which === 13) { 
                e.preventDefault(); 
                $('form').click(function () { 
                    sendForm(a, b); 
                }); 
            } 
        }); 
    }; 
    function sendForm(a, b) { 
        $.ajax({ 
            url: @Url.Action("Index", "Home"), 
            type: 'POST', 
            contentType: 'application/json', 
            data: JSON.stringify({ 
                FirstInt: a, 
                SecondInt: b 
            }), 
            success: function () { 
                alert('success'); 
            } 
        }); 
    }; 

查看

@using (Html.BeginForm("Index", "Home", FormMethod.Post, new { @class = "form-inline", role = "form" })) 
            { 
                <div class="form-group has-feedback"> 
                    @Html.TextBox("SearchString", ViewBag.SearchFilter as string, new 
            { 
                @class = "form-control", 
                onclick="keystroke()", 
                id = "search" 
            }) 
                </div> 
            } 

Controller

public async Task<ActionResult> Index(MyViewModel model) 
        { 
            //... 
            if (model.SearchString != null) 
            { 
                //... 
                var a = model.FirstInt; 
                var b = model.SecondInt; 
            } 
            //... 
            return View(model); 
        } 

请帮我把所有的值发送给 Controller 。那些在 JavaScript 中更改的以及我在文本框中输入的内容。谢谢。

请您参考如下方法:

Javascript 代码:

function keystroke() { 
var a = 0, b = 0; 
    $('#search').keyup(function (event) { a = 1; }); 
 
    $('#search').keydown(function (event) { b = 1; }); 
 
    $("#search").keypress(function (event) { 
        if (e.which === 13) { 
            e.preventDefault(); 
            $('form').click(function () { 
                var text = $("#search").val() 
                sendForm(a, b, text); 
                return false; 
            }); 
        } 
    }); 
 
}; 
function sendForm(a, b, text) { 
    var data = {FirstInt: a,SecondInt: b,SearchString: text} 
    $.ajax({ 
        url: 'Home/Index', 
        type: 'POST', 
        contentType: 'application/json', 
        data: data, 
        success: function () { 
            alert('success'); 
        } 
    }); 
}; 

Controller 代码

[HttpPost] 
public async Task<ActionResult> Index(MyViewModel model) 
    { 
        //... 
        if (model.SearchString != null) 
        { 
            //... 
            var a = model.FirstInt; 
            var b = model.SecondInt; 
        } 
        //... 
        return View(model); 
    }