簡體   English   中英

ASP.NET MVC。 從jQuery調用動作+存儲庫時出錯

[英]ASP.NET MVC. Error calling action + repository from jQuery

我試圖通過使用jQuery .load在模式中顯示ViewModel,不幸的是,嘗試這樣做時出現錯誤500,因為在創建模式窗口時,它向存儲庫發送了空的ViewModel。 我如何避免這種情況? 這是View中的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個create方法-一個動作僅返回裝飾有[HttpGet]屬性的視圖,另一個則接受viewmodel並具有[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");
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM