我真的不确定如何在ASP.NET MVC中处理模式对话框: 情况如下:在我的主页/索引操作方法中,我检查用户是否已接受条款和条件。如果没有,我想显示一个对话框来提示用户进行确认。
现在我真的不确定如何在MVC中解决此问题: 我看到的可能性:
在ViewBag中存储TaCConfirmNeeded属性,在我看来,该Viewbag包含此令牌,显示带有表单的jquery模态对话框以确认条款和条件,并从此表单调用account / confirmTA。 / p>
在我的共享文件夹中创建一个视图,该视图使用我的常用布局,并且其样式类似于模式对话框,并带有发送到account / confirmTA的表单。
是否有更好/更容易的可能性?
答案 0 :(得分:1)
这就是我在MVC中实现Modal Pop-Up的方式。希望对您有帮助。
创建局部视图(示例):
@model CodeFirst.Models.FriendsInfo
<div>
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title" id="myModalLabel">FriendsInfo</h4>
</div>
<hr />
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.Name)
</dt>
<dd>
@Html.DisplayFor(model => model.Name)
</dd>
<dt>
@Html.DisplayNameFor(model => model.Mobile)
</dt>
<dd>
@Html.DisplayFor(model => model.Mobile)
</dd>
<dt>
@Html.DisplayNameFor(model => model.Address)
</dt>
<dd>
@Html.DisplayFor(model => model.Address)
</dd>
</dl>
控制器看起来像:
public ActionResult Details(int Id)
{
FriendsInfo frnds = new FriendsInfo();
frnds = db.FriendsInfo.Find(Id);
return PartialView("_Details",frnds);
}
稍后将其放在您的_Layout上:
<div id='myModal' class='modal'>
<div class="modal-dialog">
<div class="modal-content">
<div id='myModalContent'></div>
</div>
</div>
</div>
您将需要一个带有少量jQuery的脚本来从您的角度使用AJAX进行调用:
<script>
var PostBackURL = '/Home/Details';
$(function () {
// Use your logic, to call this function and replace the parameters like the User.ID
debugger;
var id = User.Id;
var options = { "backdrop": "static", keyboard: true };
$.ajax({
type: "GET",
url: PostBackURL ,
contentType: "application/json; charset=utf-8",
data: { "Id": id },
datatype: "json",
success: function (data) {
debugger;
$('#myModalContent').html(data);
$('#myModal').modal(options);
$('#myModal').modal('show');
},
error: function () {
alert("Dynamic content load failed.");
}
});
});
//$("#closebtn").on('click',function(){
// $('#myModal').modal('hide');
$("#closbtn").click(function () {
$('#myModal').modal('hide');
});
</script>