使用Javascript MVC4访问从数据库返回的对象

时间:2012-10-26 07:55:01

标签: c# javascript asp.net-mvc

如何使用Javascript

访问从数据库返回的对象

此功能从Javascript调用

function searchUser() {
    var userName = document.getElementById('UserName').value
    $.post("SearchForUser", { userName: userName }, function (UserInfo) {

        UserInfo; //How to access the returned UserInfo properties?

    });
}

我使用此代码从数据库中获取UserInfo

    public UserInfo SearchForUser(string userName)
    {
       string password = "nicola";

        using (FormValueEntities db = new FormValueEntities())
        {
            //Query the database for the user
            UserInfo userInfo = new UserInfo();
            userInfo = db.UserGet(userName, password).FirstOrDefault();
            return userInfo;
        }
    }

UserInfo具有以下属性:UserName,UserPassword和Description

3 个答案:

答案 0 :(得分:1)

如果您返回JsonResult

,情况会更好
public JsonResult SearchForUser(string userName)
{
     ...
     return Json(userInfo, JsonRequestBehavior.AllowGet);
     //you don't need the AllowGet if this is a POST action, cannot tell
}

然后在JavaScript中,您可以轻松访问您的模型,例如

$.post("SearchForUser", { userName: userName }, function (UserInfo) {

        console.log(UserInfo.UserName) ; 

    });

答案 1 :(得分:0)

您可以从方法Json返回操作。这将JSON序列化您提供的对象并返回JsonResult

public ActionResult Search(string usernameName)
{
    return Json(SearchForUser(userName)); // borrows the result of your SearchForUser method and returns it as JSON-serialized string.
}

JsonResult应该将响应内容类型设置为“application / json”,这意味着jQuery的$.post应该看到该响应头并自动反序列化它。

function searchUser() {
    var userName = document.getElementById('UserName').value
    $.post("Search", { userName: userName }, function (UserInfo) {

        alert(UserInfo.Description); // example of consuming the deserialized JSON messsage.

    });
}

答案 2 :(得分:0)

脚本的第二部分是Java I假设的服务器端。

你不能像这样返回它,jQuery做的是向服务器发出http请求,服务器然后会发回一个响应。

正如dove评论的那样,您可以将响应格式化为JSON并在客户端使用jQuery.getJSON。