MVC 5 Razor 中的引导模式:当用户单击模式中的继续按钮时,如何将模型布尔值更新为 false
Bootstrap Modal in MVC 5 Razor: How do I update model boolean value to false when user clicks continue button in modal?
我想尝试用Ajax post请求来实现这一点,但我从未使用过Ajax,我不确定如何做到这一点。
我的密码面板视图代码如下所示:
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Reset Password</h3>
</div>
<div class="panel-body" id="myForm">
@using (Html.BeginForm("EditPassword", "Users", new { UserId = Model.User.Id, Token = Model.Token }, FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary()
<div class="form-group">
@Html.LabelFor(m => m.Password, new { @class = "col-md-2 control-label"})
<div class="col-md-10">
@Html.PasswordFor(m => m.Password, new { @class = "form-control", @type = "text" })
</div>
</div>
<div id="dialog-modal" style="display:none;" title="Basic modal dialog"></div>
<div class="col-md-9">
<button type="submit" data-toggle="modal" data-target=".bootstrapmodal" class="btn btn-primary" value="Reset" onclick="javascript: return checkPassForm(document.getElementById('myForm'));">Reset</button>
</div>
}
</div>
引导模态代码:
<div class="modal fade bootstrapmodal" id="modalMain" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="false" data-keyboard="static">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button data-dissmiss="modal" class="close modal-close-btn" data-dismiss="modal" aria-hidden="true"> <span>×</span> </button>
<div class="modal-title"><h3>News Letter Account</h3></div>
</div>
<div class="modal-body">
<p>This is a newsletter only account which does not have an existing password.</p>
<p>Do you wish to create a mySewnet account for this user?</p>
</div>
<div class="modal-footer">
<button class="btn btn-primary" id="btn-updateNL"> Continue </button>
<button class="btn btn-default cancel-modal" data-dismiss="modal" aria-hidden="true"> Cancel</button>
</div>
</div>
</div>
</div>
同一视图中的脚本代码如下所示
@Scripts.Render("~/bundles/jquery")
<script type="text/javascript">
$(document).ready(function () {
$("#btn-updateNL").on('click', function (e) {
@this.Model.User.NewsletterOnly.Equals(false);
});
});
View 重置密码面板的控制器代码:
[AllowAnonymous]
[HttpGet]
public ActionResult EditPassword(int userId, string token)
{
User user = new User();
EditUserViewModel top = new EditUserViewModel();
int rer = top.UserId;
userId = user.Id;
token = UserManager.GeneratePasswordResetToken(user.Id);
var model = new EditUserViewModel()
{
UserId = userId,
Token = token
};
return RedirectToAction("Edit", new { userId = userId });
}
//POST: /Admin/UserManager/Edit
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> EditPassword(EditUserViewModel model)
{
model.Token = UserManager.GeneratePasswordResetToken(model.UserId);
var user = this.UserManager.FindById(model.UserId); //Gets current user
var oldTermsAndConditionAgreement = user.TermsAndConditionsAgreement; //Gets current value of TermsAndConditionsAgreement
user.TermsAndConditionsAgreement = true; //Sets TermsAndConditionsAgreement to true
//Run a break on this line next time when coding
var result = this.UserManager.ResetPassword(model.UserId, model.Token, model.Password.Trim()); //If TermsAndConditionsAgreement is not true, this seems to break
user.TermsAndConditionsAgreement = oldTermsAndConditionAgreement; //TermsAndConditionsAgreement is set back to original value after process runs
if (result.Succeeded)
{
TempData["Message"] = AppResources.Common.FormAdminPasswordresetSuccess;
//return RedirectToAction("Login", "Account");
await _db.SaveChangesAsync();
//return RedirectToAction("Edit");
}
foreach (var error in result.Errors)
{
ModelState.AddModelError("", error);
}
return RedirectToAction("Edit", new { id = model.UserId });
}
我想让密码面板上的"重置"按钮能够显示模型面板,如果用户将"仅新闻通讯"复选框设置为"true"。我可以通过将这个 Razor if 语句语法放在上面的模态代码周围来做到这一点。
*当Newsletteronly设置为true并且检查帐户不是真正的帐户时,因此管理员无法重置用户的密码,因为数据库中没有为选择接收新闻信的用户创建密码。其他数据(如电子邮件,姓名,街道地址)被收集并存储在数据库中。电子邮件是此网络应用程序中的用户名。
@if(这个。Model.User.NewsletterOnly == true){}
这样做仅允许在单击重置按钮以及用户帐户满足条件时显示模式。我现在遇到的问题是试图得到在页面加载和模式消失后,在模式对话框中单击"继续"按钮时,将"仅新闻通讯"值更新为 false 的模型。我相信Ajax帖子可以解决这个问题,但不知道如何在MVC 5 Razor .Net上使用bootsrap模式实现这一点。
图像:
("页面视图")描述:视图左侧是"用户面板",它显示"仅新闻通讯"复选框,如果用户拥有仅新闻信件帐户,则将其选中为True)右侧显示重置密码面板和其他面板
模 态
$("#btn-updateNL").on('click', function (e) {
$.post("yourActionMethodToUpdateNewsLetterValue",{userId:1,NL:false},function(){
alert('updated succesully');
});
});
{userId:1,NL:false}
这里你需要传递当前用户 Id,然后将 NewsLetterOnly 变量的值传递为假。您可以使用接受这两个参数的控制器方法,然后编写逻辑来更新 Db。
控制器操作方法类似于
public async UpdateUserNewsLetterFlag(int userId,bool NL)
- 显示模块模式在Knockout中设置模型的新实例
- 有没有一种方法可以在设计模式下将ng模型或工厂绑定到iframe
- 将json模式转换为角度树控制树模型
- Node.js+Mongoose:与数据库逻辑分离的模型/模式
- 在Knockout视图模型中调用jQuery插件是一种有效的模式
- 在Backbone.js'上设置属性的模式是什么;模型和视图
- 节点.js中的模型-视图-控制器模式
- 这是一个模块化的js设计模式吗?以及如何在此模型中的不同模块中重用值
- MVC 5 Razor 中的引导模式:当用户单击模式中的继续按钮时,如何将模型布尔值更新为 false
- 如何重新绑定引导模式对话框的 mvc 模型
- Angularjs:如何在惰性模式下加载模型
- 创建新模型的正确控制器/视图模式是什么
- 用于修改从子视图模型在父视图上可观察到的删除的模式
- 当模式位于单独的文件中时,创建模型时是否存在任何问题
- MVVC模式中的模型指南(特别是使用knocket.js)
- 如何在没有循环依赖的模型之间正确共享Hapi-Joi验证模式
- Knockout JS模式用于同一页面中的多个视图模型,维护DOM结构
- 当模型执行ajax请求时,使用什么模式来监视
- 支持oplog的数据模型模式
- MissingSchema错误:模式尚未为模型“用户”注册