【问题标题】:How to get data from controller to view using ajax request - asp.net mvc 4如何使用 ajax 请求从控制器获取数据以查看 - asp.net mvc 4
【发布时间】:2014-09-25 12:19:50
【问题描述】:

我正在尝试从控制器获取数据以使用 ajax 进行查看,但未成功。以下是我的代码,它工作正常但没有获取数据。如果我错过了代码中的某些内容,请帮助并纠正我。

以下是我的代码。

@model MvcAppLearn.Models.Student


<!DOCTYPE html>
<html lang="en">
<head>
    <title>This is tile</title>
</head>

<body>

    @using (Html.BeginForm("Index", "popup", FormMethod.Get, new { id = "myform" }))
    {
        <p>
            Find by name: @Html.TextBox("SearchString")
            <button id="model-opener">Open dialog</button>
        </p>
        <div id="dialog-model" title="This is title">
            <p>
                @Html.TextBoxFor(item => item.FirstName, new { id = "ffirst" })<br />
                @Html.TextBoxFor(item => item.LastName, new { id = "llast" })<br />
            </p>
        </div>

    }


</body>
</html>

@section script
{

    <script>

        $(function () {

            $("#dialog-model").dialog({
                autoOpen: false,
                height: 300,
                width: 340,
                model: true,
                show: {
                    effect: "shake",
                    duration: 100
                },

            });

            $("#model-opener").click(function (e) {
                e.preventDefault();

                var txtFirstName = $('#ffirst');
                var txtLastName = $('#llast');
                var txtSearch = $('#SearchString');

                $.ajax({
                    url: '/popup/Index',
                    type: 'GET',
                    data: {
                        StudentId: txtSearch.val()
                    },
                    success: function (data) {

                        txtFirstName.val(data.FirstName); //HERE IS THE PROBLEM IN GETTING VALUE
                        txtLastName.val(data.LastName);   //HERE IS THE PROBLEM IN GETTING VALUE

                        $("#dialog-model").dialog("open");
                    },

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

            });

        });


    </script>

}

下面是我的控制器

public ActionResult Index(int? StudentId)
    {
        if (StudentId == null)
        {
            StudentId = 2;
            return View();
        }
        using (var db = new StdContext())
        {
            Student std = new Student();
            std = db.Students.Where(m => m.StudentId == StudentId).Single();
            return View(std);
        }

    }

【问题讨论】:

    标签: ajax asp.net-mvc-4 asp.net-ajax


    【解决方案1】:

    您不是在返回数据,而是在返回一个视图:

    return View(std);
    

    如果您只想返回 Student 对象的 数据 以供 JavaScript 代码使用,那么您可能只想将其作为 JSON 数据返回:

    return Json(std);
    

    【讨论】:

    • 感谢您的宝贵回答,但是如何在 ajax 中以 json 格式获取数据?您能分享任何示例或代码吗?,
    • @user3004110:嗯,想到的第一个例子是你问题中的代码。成功处理程序中的 data 对象应该是 JSON 序列化的 Student 对象。
    • 控制器中需要一个jsonResult方法
    • @JackM:返回JsonResult 满足ActionResult 返回类型。
    • 我是 mvc 新手,也学习 ajax 和 json。请给我一个例子或请纠正我的代码示例。非常感谢您的帮助....
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-06
    • 2014-10-07
    • 2020-09-18
    • 1970-01-01
    • 2018-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多