/ / Управління змінною сеансу всередині перегляду MVC - asp.net-mvc, сеанс, завантажувальний модуль

Змінні змінної сесії в режимі перегляду MVC - asp.net-mvc, session, bootstrap-modal

Я розробляю додаток 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">&times;</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-код і перевірити, чи є у вас значення чи ні.