ASP.NET MVC。从 jQuery 调用操作 + 存储库时出错

ASP.NET MVC. Error calling action + repository from jQuery

我试图通过使用 jQuery .load 以模态显示我的 ViewModel 不幸的是我在尝试这样做时遇到错误 500,因为当模态 window 创建时,它发送清空 ViewModel 到存储库。我怎样才能避免这种情况? 这是视图中的 jQuery:

<script>
    $(function () {
        $('#myModal').on('shown.bs.modal', function (e) {
            $('#content').load('/Home/Create');
        });
    });
</script>

这是控制器:

public ActionResult Create(AddRecordViewModel addrecord)
{
    if (addrecord != null)
    {
       _recordRepositiory.AddMessage(addrecord); 
    }          
    return RedirectToAction("Index", "Home");
}

所以在这里存储库:

public void AddMessage(AddRecordViewModel model)
{
    var userip = HttpContext.Current.Request.UserHostAddress;
    var useragent = HttpContext.Current.Request.UserAgent;
    var a = new Users
    {
        UserName = model.UserName,
        Email = model.Email
    };
    _db.Users.Add(a);
    _db.SaveChanges();
    var b = new Messages
    {
        Message = model.Message,
        UserId = a.Id,
        UserAgent = useragent,
        UserIP = userip,
        Added = DateTime.Now
    };
    _db.Messages.Add(b);
    _db.SaveChanges();
}

您的控制器应该有 2 个创建方法 - 一个操作 returns 只是装饰有 [HttpGet] 属性的视图,另一个接受视图模型并具有 [HttpPost] 属性。您的 DAL 逻辑属于后者。

示例:

    [HttpGet]
    public ActionResult Create()
    {
        return View("Create", new AddRecordViewModel());
    }

    [HttpPost]
    public ActionResult Create(AddRecordViewModel addrecord)
    {
        if (addrecord != null)
        {
           _recordRepositiory.AddMessage(addrecord); 
        }          
        return RedirectToAction("Index", "Home");
    }