3

我正在开发一个 asp.net mv3 应用程序。

在一个助手类中,我有一个方法可以根据他的 ID 返回一个人的对象

public Person GetPersonByID(string id)
{
    // I get the person from a list with the given ID and return it
}

在一个视图中,我需要创建一个可以调用的 jquery 或 javascript 函数GetPersonByID

function getPerson(id) {
    //I need to get the person object by calling the GetPersonByID from the C# 
    //helper class and put the values Person.FirstName and Person.LastName in 
    //Textboxes on my page
}

我怎样才能做到这一点?

这可以通过使用和ajax调用来完成吗?

    $.ajax({
            type:
            url:
            success:
            }
        });

任何帮助是极大的赞赏

谢谢

4

2 回答 2

12

就此而言,Javascript 或 jQuery 不知道 a 是什么method意思。jQuery 不知道 C# 是什么。jQuery 不知道 ASP.NET MVC 是什么。jQuery 不知道Person.NET 类的含义。jQuery 不知道 .NET 类的含义。

jQuery 是一个 javascript 框架,它(以及许多其他东西)可用于将 AJAX 请求发送到服务器端脚本。

在 ASP.NET MVC 中,这些服务器端脚本称为控制器操作。在 Java 中,这些称为 servlet。在 PHP - PHP 脚本中。等等...

因此,您可以编写一个控制器操作,该操作可以使用 AJAX 进行查询,并将返回Person该类的 JSON 序列化实例:

public ActionResult Foo(string id)
{
    var person = Something.GetPersonByID(id);
    return Json(person, JsonRequestBehavior.AllowGet);
}

接着:

function getPerson(id) {
    $.ajax({
        url: '@Url.Action("Foo", "SomeController")',
        type: 'GET',
        // we set cache: false because GET requests are often cached by browsers
        // IE is particularly aggressive in that respect
        cache: false,
        data: { id: id },
        success: function(person) {
            $('#FirstName').val(person.FirstName);
            $('#LastName').val(person.LastName);
        }
    });
}

这显然假设您的 Person 类具有FirstNameLastName属性:

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
}
于 2012-04-13T17:16:35.833 回答
1

你当然可以!在服务器端代码中,特别是在控制器中,您需要做的就是将序列化为 JSON 对象的 Person 返回,如下所示:

[HttpPost] public ActionResult GetPersonByID(string id) { return Json(person); }

然后在你的 AJAX 中,

        $.ajax({
            type: "POST",
            url: form.attr('action'),
            data: form.serialize(),
            error: function (xhr, status, error) {
                //...
            },
            success: function (result) {
                // result.FirstName
            }
        });
于 2012-04-13T17:20:59.107 回答