Я розробляю додаток MVC, де люди можуть підписатися. Після реєстрації на сторінці з’явиться повідомлення про підтвердження, використовуючи модальний завантажувач. The модальний Блок перегляду спочатку перевіряє змінну сеансу, якщо сеанс не є нульовим, то він відображатиметься:
@if (Session["signUpName"] != null)
{
<!-- Modal start -->
<script type="text/javascript">
$(window).load(function(){
$("#signUpModal").modal("show");
});
</script>
<div class="modal fade" id="signUpModal" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data- dismiss="modal">×</button>
<h4 class="modal-title">Registration Confirmation</h4>
</div>
<div class="modal-body">
<p>Dear @Session["signUpName"]</p>
<p>Thank you ......</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data- dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
<!-- Modal end -->
}
Моя проблема - після реєстрації, я не можу позбутися модального вікна !! Я намагався зробити сеанс рівним нулю всередині оператора if, якщо не пощастило.
Будь-які ідеї?
Відповіді:
0 для відповіді № 1Не використовуйте для цього сесію. Вся справа в MVC - використовувати Моделі для своїх поглядів. Отже, створіть клас моделі для зберігання будь-яких даних, необхідних для перегляду. У момент, коли ви починаєте використовувати сеанс і думаєте про його очищення з точки зору, ви "пішли якнайдалі від MVC, як ви можете отримати. Це не веб-форми або класичний підписка, вам потрібно подумати по-іншому.
Отже, ви можете створити свою модель із значень сесії. Якщо вам потрібно очистити сеанс, зробіть це в контролері, перш ніж завантажувати подання. Зробіть свій погляд максимально німим і максимально простим.
public class UserModel {
public string Username { get set }
}
в контролері ви дбаєте про заповнення моделі
public ActionResult SomeAction()
{
model = new UserModel { Username = Session["someSession"] == null ? "" : Session["someSession"].ToString() }
return View(model);
}
На ваш погляд, я б не поєднував бритву та Javascript так. Ви можете призначити значення змінним JavaScript з моделі
Отже, в JavaScript ви можете зробити щось подібне:
var username = "@Model.Username";
тепер ви можете продовжити свій js-код і перевірити, чи є у вас значення чи ні.