2017-01-12 9 views
0

Я создал bootstrap modal, который вызывает действие контроллера для загрузки представления внутри модального.Действие контроллера загрузки MVC с тегом авторизации от другого вида

Действие контроллера имеет тег авторизации, который означает, что всякий раз, когда вы загружаете представление по умолчанию (а не модальное), оно просит вас войти в систему. Модаль содержит новую функциональность, в которой я не хочу, чтобы анонимные пользователи имели доступ к тег авторизации.

Но пользователи не имеют доступа к чему-либо, так как представление вызывает действие «Создать контроллер» (имеющее тег авторизации), даже если модальная функция не была открыта.

<div id="myModal" class="modal fade" role="dialog"> 
    <div class="modal-dialog" style="width: 70%;"> 

     <!-- Modal content--> 
     <div class="modal-content"> 
      <div class="modal-header"> 
       <button type="button" class="close" data-dismiss="modal">&times;</button> 
       <h3 class="modal-title text-center">Create New Connecting Rod</h3> 
      </div> 
      <div class="modal-body" id="createModal"> 
       @Html.Action("Create") 
      </div> 
     </div> 
    </div> 
</div> 

Приведенный выше код является кодом, который используется для вызова создания действия контроллера, я хочу только действие контроллер будет называться, когда кнопка модальный была нажата не тогда, когда первой загрузке страницы.

[Authorize] 
public ActionResult Create() 
{ 
    return PartialView(); 
} 

Это единственный код в мой контроллер Создать Действие

Я пытался использовать некоторые JQuery только загрузить Action когда кнопка была нажата, но это не показалось, что работает.

$(document).on("click", "#createNew", function (e) { 
    alert("hello"); 
    $('@Html.Action("Create")').appendTo('#createModal'); 
}); 

ответ

1

Не загружайте свой авторизованный контент при загрузке страницы, так как пользователь может быть авторизовано или анонимно. Скорее загрузите контент, когда пользователь нажимает на ссылку или кнопку, которые затем вызывают метод открытого модального диалога.

<div id="myModal" class="modal fade" role="dialog"> 
    <div class="modal-dialog" style="width: 70%;"> 

     <!-- Modal content--> 
     <div class="modal-content"> 
      <div class="modal-header"> 
       <button type="button" class="close" data-dismiss="modal">&times;</button> 
       <h3 class="modal-title text-center">Create New Connecting Rod</h3> 
      </div> 
      <div class="modal-body" id="createModal"> 
       <!-- have some loading icon here by default --> 
      </div> 
     </div> 
    </div> 
</div> 

При условии, что у вас есть кнопка, которая откроет диалоговое писать следующий сценарий

<script> 
$(function{ 
$("your_button").click(function(){ 

    // load content of your url @Url.Action("Create") in div "#createModal" 
// and then open the dialog 

    $.ajax({  
        url: "@Url.Action("Create")", 
        cache: false, 
        dataType: "html", 
        success: function (data) { 
         $("#createModal").html(data); 
       } 
      }); 

      $("#myModal").modal().show(); 

    }); 
}); 
</script> 
+0

Привет жаль, что я забыл упомянуть, что я пытался что-то вроде этого, но он все еще не был работать, я буду редактировать свой вопрос чтобы показать вам –

+0

убедитесь, что у вас есть кеш: ложь в вашем вызове, другой мудрый вы будете получать кешированный контент каждый раз –

+0

Должен ли я добавить ajax для этого? –