簡體   English   中英

MVC控制器被多次加載

[英]MVC controller being loaded multiple times

我的目標:

用戶會話將跟蹤存儲在Session.Add(guid.tostring())中的guid。

當在div中刷新局部時,控制器將檢查現有的向導。 這將讓我跟蹤需要顯示哪些通知,已經顯示了什么以避免重復..etc。

問題:

當應該再次顯示通知時,即使我在傳遞給視圖的模型中看到通知也沒有

我認為是原因

由於某種原因,當我調試控制器作為加載部分方法的開始時,它已被加載了很多次,我相信這就是為什么在顯示通知時沒有顯示的原因。

刷新部分的主索引視圖。 #overview。 而且間隔是每15秒一次。

function intervalTrigger() {
    $('#overview').load('/Home/Overview');
};

<div id="overview">
    @{Html.RenderPartial("Overview", "Home");}
</div>

顯示警報的概述部分中的代碼

@for (int i = 0; i < Model.DisplayAlerts.Count(); i++)
{
    @:$(function () {
            @:$.Notify({
                    @:keepOpen: true,
                    @:caption: '@Model.DisplayAlerts[i].SectionName',
                    @:content: '@Model.DisplayAlerts[i].ParamDescription <br/> @Model.DisplayAlerts[i].DetailDatetime.ToString("MM/dd/yyyy hh:mm:ss tt ")',
                    @:type: 'alert'
                @:});
        @:});
}

正在填充傳遞給視圖的模型的代碼

OverviewModel model = new InformationController().GetOverviewModel();
model.DisplayAlerts = new List<BasicSectionDetailModel>();

List<BasicSectionDetailModel> details = new Collector.InfoCollector().GetSectionDetailsNotOKState();
List<Guid> sessionKeys = new List<Guid>();

for (int i = 0; i < Session.Contents.Count; i++)
{
    Guid guid;

    if (Guid.TryParse(Session.Keys[i].ToString(), out guid))
    {
        sessionKeys.Add(guid);
    }
}

List<BasicSectionDetailModel> addAlert = details.Where(x => !sessionKeys.Any(x2 => x2 == x.ID)).ToList();

foreach (BasicSectionDetailModel alert in addAlert)
{
    Session.Add(alert.ID.ToString(), null);
}

List<Guid> removeAlert = sessionKeys.Where(x => !details.Any(x2 => x2.ID == x)).ToList();

foreach (Guid remove in removeAlert)
{
    Session.Remove(remove.ToString());
}

model.DisplayAlerts = addAlert;
return model;

我發現了問題

model.DisplayAlerts = addAlert;

addAlert被銷毀了。 我必須將內容復制到模型中,而不是將一個變量分配給另一個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM