如何在asp.net mvc中调用简单的ajax程序

时间:2014-09-16 06:56:44

标签: ajax asp.net-mvc

我开始在asp.net MVC 4中学习Ajax。我想根据以下场景创建一个非常简单的程序。

我想要一个表单上的两个文本框(FirstName,LastName)和一个按钮,每当我在这些文本框中写入内容时,这些值应该通过使用Ajax分配给两个标签(lblFristName,lblLastName)。这样页面就不会刷新了。

我如何实现上述功能?请提供清晰/简单的代码示例,没有其他网站链接,谢谢。

以下是我尝试的代码: -

 @model MvcAppLearn.Models.Student

    @{
        ViewBag.Title = "AjaxCall";
        Layout = "~/Views/Shared/_Layout.cshtml";
    }

    <h2>AjaxCall</h2>

    @using (Html.BeginForm("AjaxCall", "Ajax", FormMethod.Post, new { id = "my-form" }))
    {

        @:FirstName @Html.EditorFor(x => x.FirstName);
        @:FirstName @Html.EditorFor(x => x.LastName);

        <input type="submit" value="Submit" />
    }

        <br />


    <div id ="result">


    </div>

    @section scripts{

    <script type="text/javascript">



        $(function () {

            $("#my-form").on("Submit", function (e) {

                //e.preventDefault();
                debugger

                $.ajax({
                    url: this.action,
                    type: this.method,
                    data: $(this).serialize(),
                    succes: function (data) {
                        $("#result").html(data);
                    },

                        error: function () {
                            alert("Oh noes");
                        }
                });
            });
        });

    </script>
        }

部分视图

@model MvcAppLearn.Models.Student

@{
    ViewBag.Title = "AjaxCall";
    Layout = "~/Views/Shared/_Layout.cshtml";
}


<h2>Ajax Partial View</h2>

<label>@Html.DisplayFor(item => item.FirstName)</label><br />
       @Html.Label(Model.LastName)

@*  @Html.EditorFor(x => x.FirstName)<br />
  @Html.EditorFor(x => x.LastName)*@

控制器

public ActionResult AjaxCall()
        {
            return View();
        }

        [HttpPost]
        public virtual ActionResult AjaxCall(Student model)
        {

            return PartialView("ajax_partial" , model);
        }

所以上面的代码将我带到局部视图,但我希望生活在我放置文本框的页面上,并且在同一页面上我想显示这些标签。如果有任何错误请更正,谢谢

2 个答案:

答案 0 :(得分:0)

如果这是你的观点,

@Html.TextBoxFor(r => r.textbox1, new { id = "textbox1"})
<label id="label1"></label>

您可以使用简单的jquery更改/ keyup事件

来实现此目的
 $('#textbox1').bind("change keyup", function() {
        $('#label1').val($('#textbox1').val())
    });

答案 1 :(得分:0)

我已经做到了,问题是我在“提交”中写了“s”作为资本而在“成功”功能中最后错过了's'。以下是正确的代码。

<script type="text/javascript">



    $(function () {


        $("#my-form").on("submit", function (e) {
            e.preventDefault();
            //debugger
            $.ajax({
                url: this.action,
                type: this.method,
                data: $(this).serialize(),
                success: function (data) {
                    $("#result").html(data);
                },

                    error: function () {
                        alert("Oh noes");
                    }
            });
        });
    });

</script>