MVC控制器被多次加载

时间:2015-07-22 16:26:06

标签: c# asp.net-mvc razor

我的目标:

  

用户会话将跟踪存储的guid   Session.Add(guid.tostring())。

     

当div内部刷新部分时,控制器将检查   对于现有的guids。这将让我跟踪需要的通知   显示,已经显示的内容以避免重复..等等。

问题:

  

当再次显示通知时,即使我也没有   在传递给视图的模型中看到它

我认为是什么原因

  

由于某种原因,我调试控制器作为开始   加载部分的方法,我加载了很多次   相信是为什么当应该显示通知时,它不是。

主索引查看刷新部分内容。 #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;

1 个答案:

答案 0 :(得分:0)

我发现了问题

<%= link_to 'Change my password', spree.edit_password_url(@resource, reset_password_token: @token) %>

addAlert正在被销毁。我不得不将内容复制到模型中,而不是将一个var分配给另一个。