javascript - 如何向 Json 结果添加自定义字段 - ASP.NET MVC

标签 javascript asp.net asp.net-mvc json

我正在开发一个能够编辑注册用户信息的管理页面。当我从下拉列表中选择用户时,将填充用户的当前信息以编辑字段。我用 Javascript 和 Json 制作了它。

这是我到目前为止的 JS 代码:

$(document).ready(function () {

        $("#UserId").change(function () {

            if ($(this).val() != "" && $(this).val() != undefined && $(this).val() != null) {
                $.ajax({
                    type: "POST",
                    url: "/AdminController/GetUserData",
                    cache: false,
                    data: { userid: $(this).val() },
                    success: function (result) {                         
                        $("#EMailAdress").val(result.EMailAdress)
                        $("#UserName").val(result.UserName)
                    }

                });
            }

            else {
                $("#UserName").val("");
                $("#EMailAdress").val("");
            }

        });
    });

如您所见,我正在触发“/AdminController/GetUserData”,并且其中有以下代码:

[HttpPost]
    public JsonResult GetUserData()
    {
        int userid = Convert.ToInt32(Request.Form["userid"]);
        MyContext _db = new MyContext();
        var userObj = _db.Users.SingleOrDefault(p => p.UserId == userid);
        return Json(userObj);
    }

现在我必须在同一页面中显示所选用户的当前 Angular 色。 我可以在我的 Controller 中访问该 Angular 色数据。但我找不到将其添加到我的 JsonResult 中的方法。我认为我可以触发另一个 Controller 方法,使用另一个 JS 代码获取用户的 Angular 色数据,但我认为这不是一个好方法。

我是初学者,所以如果解决方案很简单,请不要责怪我...... 我希望我说清楚了。 任何帮助将不胜感激。

最佳答案

您可以定义 View 模型:

public class MyViewModel
{
    public User User { get; set; }
    public RoleData Role { get; set; }
}

您的 Controller 操作将填充:

[HttpPost]
public ActionResult GetUserData(int userId)
{
    MyContext _db = new MyContext();
    var userObj = _db.Users.SingleOrDefault(p => p.UserId == userId);
    var roleData = .....

    var model = new MyViewModel();
    model.User = userObj;
    model.Role = roleData;
    return Json(model);
}

请注意 Controller 操作如何将 userId 作为参数,以避免您编写从请求中解析它的管道代码。这已经由默认模型绑定(bind)器处理。

在 AJAX 成功回调中,您可以访问我们定义的 View 模型的 2 个属性(分别为 UserRole):

success: function (result) {                         
    $("#EMailAdress").val(result.User.EMailAdress);
    $("#UserName").val(result.User.UserName);

    var roleData = result.Role;
    // do something here with the role data
}

关于javascript - 如何向 Json 结果添加自定义字段 - ASP.NET MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20090725/

相关文章:

asp.net - 用另一个图像标记图像以在 ASP.NET 中创建水印的最佳方法?

asp.net - ELMAH 无法登录生产环境中的数据库,但无法登录测试服务器

c# - 如何导航到 Blazor 应用程序中的 ASP.NET Core MVC Controller ?

javascript - 使用 iframe 预览

javascript - 正则表达式选择不起作用

javascript - orientjs:在事务中更新插入边

javascript - Requirejs + Backbone 未捕获类型错误 : Cannot read property 'Model' of undefined

c# - mysql 中可选的 where 子句条件

asp.net - 如何在 asp.net 中禁用某些页面的 CSS

asp.net-mvc - 在剑道调度程序中将一周的第一天设置为星期一