C# 如何在ASP.NET中将值从视图传递到存储库?
我正在开发一个ASP.NET MVC web门户,它要求用户在首次登录时接受使用条款。在用户单击accept之后,我需要将bool(AcceptedTerms)作为true传回。该值存在于数据库中,并且有一个存储库值(PortalUser.AcceptedTermsAndConditions),将用于从数据库中推送或拉取该值。在控制器中C# 如何在ASP.NET中将值从视图传递到存储库?,c#,asp.net-mvc,C#,Asp.net Mvc,我正在开发一个ASP.NET MVC web门户,它要求用户在首次登录时接受使用条款。在用户单击accept之后,我需要将bool(AcceptedTerms)作为true传回。该值存在于数据库中,并且有一个存储库值(PortalUser.AcceptedTermsAndConditions),将用于从数据库中推送或拉取该值。在控制器中 [ChildActionOnly] public ActionResult RenderLogIn() { PortalUser portalUser
[ChildActionOnly]
public ActionResult RenderLogIn()
{
PortalUser portalUser = new PortalUser();
LogInViewModels model = new LogInViewModels() { AcceptedTerms = portalUser.AcceptedTermsAndConditions };
return PartialView("_LogIn", model);
}
然后在模型中:
public class LogInViewModels
{
public bool AcceptedTerms { get; set; }
}
并且认为:
@if (Model.AcceptedTerms == false)
{
<script>
$("#TOUModal").modal('show');
function validateTerms() {
var valid = ($("#chkTOU").prop("checked"));
$("#submitTerms").prop("disabled", !valid);
}
$("#chkTOU").change(validateTerms);
$("#submitTerms").click(function () {
@Model.AcceptedTerms == true;
});
</script>
}
如何将所有这些联系在一起,以便在登录时正确地提取DB值,并且在接受术语时,在DB中更新值?首先将新属性添加到LogInViewModels:UserID,并将其绑定到RenderLogIn()。然后,您必须在控制器中创建下一个方法(在其中存储RenderLogIn()方法)。我知道您希望使用javascript发送Model.AcceptedTerms数据,而不是提交表单,所以您必须创建对新创建的控制器方法的AJAX调用 LogInViewModels新属性:
public int UserId { get; set; }
修改的RenderLogIn()方法:
控制器的方法:
[HttpPost]
public ActionResult AcceptTermsAndConditions(int userId, Boolean accepted)
{
UpdateAcceptedTermsAndConditions(userId, accepted);
return PartialView("YourView");
}
视图中的Javascript ajax调用:
var model=@Html.Raw(Json.Encode(model));
$(“#提交者”)。单击(函数(){
model.AcceptedTerms=true;
$.ajax({
类型:“POST”,
url:'@url.Action(“AcceptTermsAndConditions”,“YourController”),
contentType:“应用程序/json;字符集=utf-8”,
数据:JSON.stringify(模型),
数据类型:“html”
});
});
有关将模型转换为json对象的更多信息:
[ChildActionOnly]
public ActionResult RenderLogIn()
{
PortalUser portalUser = new PortalUser();
LogInViewModels model = new LogInViewModels() {
AcceptedTerms = portalUser.AcceptedTermsAndConditions,
UserId = portalUser.Id }; // or you have to get this Id from other DB source
return PartialView("_LogIn", model);
}
[HttpPost]
public ActionResult AcceptTermsAndConditions(int userId, Boolean accepted)
{
UpdateAcceptedTermsAndConditions(userId, accepted);
return PartialView("YourView");
}