Я работаю над веб-порталом ASP.NET MVC, который требует, чтобы пользователи принимали Условия использования при первом входе в систему. После того, как пользователь щелкнет по кнопке подтверждения, мне нужно вернуть bool (AcceptedTerms) как true. Это значение существует в БД, и существует значение хранилища (PortalUser.AcceptedTermsAndConditions), которое будет использоваться для передачи или извлечения значения из БД. В контроллере
[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>
}
Наконец, у меня есть метод хранилищачтобы обновить значение в БД:
public void UpdateAcceptedTermsAndConditions( int UserID, Boolean Accepted )
{
VerifyConnectionString_LicensePortal();
SqlDataSource sqlDataSource = new SqlDataSource( ConnectionString_LicensePortal, "" );
String strSQLQuery = "UPDATE [dbo].[Users] SET [AcceptedTermsAndConditions] = @Accepted WHERE [UserId] = @UserID;";
sqlDataSource.UpdateCommand = strSQLQuery;
sqlDataSource.UpdateCommandType = SqlDataSourceCommandType.Text;
sqlDataSource.CancelSelectOnNullParameter = false;
sqlDataSource.UpdateParameters.Clear();
sqlDataSource.UpdateParameters.Add( "Accepted", DbType.Boolean, Accepted.ToString() );
sqlDataSource.UpdateParameters.Add( "UserID", DbType.Int32, UserID.ToString() );
sqlDataSource.Update();
}
Как связать все эти вещи вместе, чтобы при входе в систему я правильно вводил значение БД, а когда условия принимались, значенияобновляется в БД?