2013-03-14 2 views
0

Я новичок в MVC3. У меня есть кнопка [Generate Password] на моем представлении «Изменить». Мне нужно выполнить функцию GeneratePsw(), определенную в контроллере Admin, которая возвращает строку перед отображением модальности, которая будет содержать значение, возвращаемое GeneratePsw().MVC3 & Bootstrap - Выполнить функцию перед показом Bootstrap modal

Я также попытался поместить значение в ViewBag.pwd вместо этого и прочитать его из модального. Никакой успех

Другими словами:

Пользователь не сделать кнопку в [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

Так я понимаю, что вы хотите сделать это как вызов 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. Это также полностью непроверено, просто грубое руководство.

ИЛИ, альтернативой может быть возвращение частичный вид, в котором есть модальный материал, а затем показать это.

+0

+1 Большое вам спасибо! Это именно то, что мне нужно! Теперь вы отлично работаете! – equisde

Смежные вопросы