c# - 使用 Json 将具有两个对象的 View 模型传递给 Controller

标签 c# jquery ajax asp.net-mvc json

这是我的代码。下面的 JSON 不正确,但我认为我已经很接近了。 Controller 每次都获取空数据。任何帮助将不胜感激。

  $( "#btnRegister" ).click(function() {

            var personModel = {
                FirstName: $("#txtFirstName").val(),
                LastName: $("#txtLastName").val(),
                Phone: $("#txtPhone").val(),
                EmailAddress: $("#txtEmail").val()
            };

            var loginModel = {
                UserName: $("#txtUserName").val(),
                Password: $("#txtPassword").val()
            };

            var registerViewModel = {
                WebUser: loginModel,
                Person: personModel
            };

            $.ajax({
                url: "@Url.Action("Register", "User")",
                type: 'POST',
                data: registerViewModel,
                success: function(result) {
                    alert(result);
                }
            });
        });

[HttpPost]
    public JsonResult Register(RegisterViewModel registerViewModel)
    {

        string name = registerViewModel.Person.FirstName;
        string username = registerViewModel.WebUser.UserName;

        return Json(name);
    }

public class RegisterViewModel
{
    public WebUser WebUser { get; set; }
    public Person Person { get; set; }
}

public class WebUser
{   
    [Key]
    public string UserId { get; set; }
    public string UserName { get; set; }
    public string Password { get; set; }
}

public class Person
{
    [Key]
    public int PersonId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Phone { get; set; }
    public string EmailAddress { get; set; }
    public string EmailConfirmation { get; set; }
    public DateTime DateCreated { get; set; }
    public string UserId { get; set; }
}

最佳答案

ajax部分需要像这样

       $.ajax({
            url: "@Url.Action("Register", "User")",
            type: 'POST',
            contentType: "application/json; charset=utf-8",
            data: JSON.stringify(registerViewModel),
            success: function(result) {
                alert(result);
            }
        });

希望这有帮助!

关于c# - 使用 Json 将具有两个对象的 View 模型传递给 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22367659/

相关文章:

java - C# 和 Java 服务器之间的 TCP 通信

C# 无法连续打开第二个窗体 2 次以上

C# Crc32 实现

javascript - js和jquery的OOP框架

javascript - 分离函数时变量不记得自己

javascript - 如何拆分数组并仅将特定值保存到数据库中? Laravel 与 Ajax

c# - fragment visual studio xamarin 上的访问按钮

javascript - 单击时的 CSS/JS 动画

JQuery从ajax加载的数据中获取元素id

javascript - CS-Cart Ajax响应div