我是MVC3的新手。我的“编辑”视图中有一个[生成密码]按钮。我需要执行一个在'Admin'控制器中定义的函数GeneratePsw(),它在显示一个包含GeneratePsw()返回的值的模态之前返回一个字符串。
我还尝试将值放在ViewBag.pwd中,而不是返回它并从Modal中读取它。没有成功
换句话说:
用户点击[Generate Password]
按钮。然后调用GeneratePsw()
并返回一个字符串。应该会自动出现一个Bootstrap模式,在标签中显示该值。
在我看来......
<a href="#1" role="button" class="btn btn-primary btn-small" data-toggle="modal" onclick="location.href='@Url.Action("GeneratePsw", "Admin")';return false;"><i class="icon-lock icon-white"></i> Generate Password</a>
</div>
<div id="1" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="myModalLabel">Password generated</h3>
</div>
<div class="modal-body">
<p><strong>Password: @(ViewBag.pwd)</strong></p>
</div>
<div class="modal-footer">
<button class="btn" data-dismiss="modal" aria-hidden="true">OK</button>
</div>
</div>
</td>
我的GeneratePsw()函数:
[HttpPost]
public ActionResult GeneratePsw()
{
HomeBridgeEntities ddbb = new HomeBridgeEntities();
SqlConnection Cn = new SqlConnection(((System.Data.EntityClient.EntityConnection)ddbb.Connection).StoreConnection.ConnectionString);
SupPassGenerator sup = new SupPassGenerator(Cn);
string psw = sup.CreateRandomPassword(9);
ViewBag.psw = psw;
return RedirectToAction("Edit");
}
答案 0 :(得分:1)
所以我的理解是你想把它作为一个ajax调用吗?即不重新加载整个页面?我还假设你正在使用jQuery?
你可以通过回传到你的控制器来返回JSON。这可能是最简单的方法:
控制器:
public ActionResult GeneratePsw()
{
...
string psw = sup.CreateRandomPassword(9);
var json = new { password = psw };
return Json(json);
}
你页面上的js:
$('#yourgeneratebutton').on('click', function() {
$.getJSON('YourController/GeneratePsw', function(data) {
$('#yourpasswordp').text(data.password);
$('#1').modal('show');
});
注意,我正在使用getJSON
,因此您无法使用HttpPost
修饰操作。 (您还没有发布任何数据?您必须更改http属性,或者使用$.post
。这也是完全未经测试的,只是一个粗略的指南。
OR,另一种选择可能是返回一个包含模态内容的局部视图,然后显示出来。