MVC3& Bootstrap - 在显示Bootstrap模式之前执行功能

时间:2013-03-14 13:22:43

标签: asp.net-mvc-3 post twitter-bootstrap modal-dialog

我是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");

}

1 个答案:

答案 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,另一种选择可能是返回一个包含模态内容的局部视图,然后显示出来。