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");
}
我试图通过使用 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");
}