Member 12697982 Ответов: 2

Модальное диалоговое окно в MVC


Привет может кто поможет мне в присвоении переменной contact_person_id JavaScript для загрузки('@HTML-код.Сырье(URL-Адрес.Когда я назначить (contact_person_id = contact_person_id) в качестве параметра, я получаю ошибку, мой полный код ниже ВАР contact_person_id = (ответ.contact_person_id); $('диалог#').нагрузки('@HTML-код.Сырье(URL-Адрес.Действий("AddUserPartialView_Applicant", "CreateApplicationFromSearch", новый { Applicant_id = модель.applicant_id,
Application_id = ViewBag.Application_id, CameFrom= "заявитель", contact_person_id = contact_person_id }))'

$('#btnSaveClose'). click (функция () {
$(функция () {
$('диалог#').диалог({
autoOpen: ложь,
ширина: 400,
изменение размера: нет,
название: "подтверждение электронной почты",
модальные: накладные
});
var form = $('#ApplicantForm');

пробовать {
$.Аякс({
кэш: false,
асинхронные: правда,
тип: "пост",
url: "/ CreateApplicationFromSearch/SaveAndCloseApplicant",
данные: форма. сериализация(),
успех: функция (ответ) {
if (response != null & & amp; response. success) {
ВАР contact_person_id = (ответ.contact_person_id);
$('диалог#').нагрузки('@HTML-код.Сырье(URL-Адрес.Действий("AddUserPartialView_Applicant", "CreateApplicationFromSearch",
новый { Applicant_id = модель.applicant_id,
Application_id = ViewBag.Идентификатор приложения,
CameFrom= "заявитель", contact_person_id = contact_person_id }))'
функция (ответ, статус, xhr) {
$('диалог#').диалогового окна ("открыть");
$(".ui-dialog-titlebar-close"). скрыть();
});
} еще {
предупреждение(ответ.responseText);
}
},
ошибка: функция (ответ) {
alert ("ошибка!" + response. responseText);
}
});

Что я уже пробовал:

попробовал использовать Url.Action вместо raw(Url. Action

Richard MacCutchan

"я получаю ошибку"
Тогда, пожалуйста, расскажите нам, что это такое и где это происходит.

2 Ответов

Рейтинг:
1

NightWizzard

Вы можете использовать модальные диалоги Bootstrap - см. Описание здесь:
Bootstrap JS модальная ссылка[^]

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

Session.Add("MessageBox", "This is my message text");
Session.Add("MessageBoxWidth", "300px");
Session.Add("MessageBoxHeight", "130px");

В методе действия, который отображает следующее представление (может быть таким же, как и раньше), переведите свойства сеанса в viebag следующим образом:
if(Session["MessageBox"] != null)
{
    ViewBag.MessageBox = Session["MessageBox"];
    ViewBag.MessageBoxWidth = Session["MessageBoxWidth"];
    ViewBag.MessageBoxHeight = Session["MessageBoxHeight"];
   Session.Remove("MessageBox");
}

Обратите внимание, что свойство session удаляется, чтобы показать messae только один раз!
В общем макете добавьте следующие строки:
@if (ViewBag.MessageBox != null)
{
    <div id="MessageBox" style="width:@ViewBag.MessageBoxWidth;height:@ViewBag.MessageBoxHeight;" class="messagebox">
    <br />
    @ViewBag.MessageBox
    <br />
    <br />
    <input type="image" src="@Url.Content("~/Content/Images/ok_32.png")" title="OK" onclick="hideMessageBox();" class="btn btn-default" />
    </div>

    <script type="text/javascript">
    function hideMessageBox() {
        document.getElementById('MessageBox').style.visibility = 'hidden';
        }
    </script>
}

...и заменить 'OK_32.формат PNG' на свой собственный образ для 'ОК' или заменить img тег с простым текстом "ОК".
Вот оно!


Рейтинг:
0

F-ES Sitecore

Вам нужно понять, как работает MVC и как визуализируются представления. Ваш серверный код запускается первым (все, что находится в блоке @ {}), и полученный html-код отправляется в браузер для выполнения. Итак, в этой строке

$('#dialog').load('@Html.Raw(Url.Action("AddUserPartialView_Applicant", "CreateApplicationFromSearch", 
new { Applicant_id = Model.applicant_id, 
Application_id = ViewBag.Application_id, 
CameFrom="Applicant", contact_person_id = contact_person_id }))'


Url. Action выполняется на сервере, однако "contact_person_id" нигде не определен в коде вашего сервера. Она определяется как переменная js, но эта переменная существует только после запуска вашего серверного кода и получения результатов браузером, поэтому вы не можете получить доступ к ней в своем серверном коде. И даже тогда это было бы бессмысленно, так как все равно не имело бы никакой ценности.

Если вы хотите добавить переменные js в свои URL-адреса, сделайте что-то вроде

'@Url.Action("MyAction", "MyController")?p1=' + jsVar1 + '&p2=' + jsVar2