Я бы обнаружил, есть ли у пользователя FollowUpItems в действии, которое загружает страницу панели мониторинга, и сохранил бы эту информацию во ViewBag.Например,
public ActionResult Dashboard()
{
ViewBag.HasFollowupItems = UserHasFollowupItems();
return View();
}
В этом примере UserHasFollowupItems()
возвращает строку, что-то вроде 'true' или false '.
В представлении панели управления добавьте пустой элемент div, в которыймодальные данные будут загружены
<div id="followup_items"></div>
, затем добавьте document.ready () в том же представлении, которое определяет модальное значение и определяет, следует ли загружать модальное значение:
$(document).ready(function ()
{
// define modal
$("#followup_items").dialog({
autoOpen: false,
height: 'auto',
width: 825,
title: 'Followup Items',
position: [75, 75],
modal: true,
draggable: true,
closeOnEscape: true,
buttons: {
'Close': function ()
{
$(this).dialog('close');
}
},
close: function ()
{
$('.ui-widget-content').removeClass('ui-state-error');
},
});
if(@ViewBag.HasFollowupItems == 'true')
{
$('#followup_items').load("/FollowupItems/Load", function (data, txtStatus, XMLHttpRequest)
{
$('#followup_items').dialog('open');
}
});
});
В этомпример /FollowupItems/Load
- это URL-адрес соответствующего контроллера / действия, которое генерирует данные для представления.Вы правы, представление для этого будет частичным представлением, загруженным в пустой div-элемент followup_items на странице.
Таким образом, вы можете использовать объект @ViewBag в любом месте представления, в данном случае передавая свой логический типуказывает, должен ли модал быть загружен / открыт.Я не нашел способа использовать ViewBag во внешнем файле javascript, поэтому я обычно использую встроенные теги сценариев в своих представлениях, чтобы я мог использовать ViewBag.
Вы также можете добавить идентификатор пользователя таким же образом.(/FollowupItems/Load/@ViewBag.Userid
) или любые другие данные, необходимые для последующих действий.