我有一個視圖,當視圖呈現時加載一組模塊(我們將說其他部分視圖)。在以前加載的剃刀部分視圖中更新模型值
所以認爲它像這樣在主視圖:
<div>
@Html.PartialView("~/Views/MyApp/Partials/Module1.cshtml");
</div>
<div>
@Html.PartialView("~/Views/MyApp/Partials/Module2.cshtml");
</div>
<div>
@Html.PartialView("~/Views/MyApp/Partials/Module3.cshtml");
</div>
有是在局部視圖Module2.cshtml
改變的模型值。實際上,它在Module2
視圖的操作中發生了變化。我在public ActionResult RenderChecklist(Model pageModel, IGrouping<string, ChecklistItem> list, int checklistCount)
設置模型值:
if (itemCounter == itemCheckedCounter)
{
priorityCounter++;
pageModel.MyAppInfo.ChecklistPriorityLevel = priorityCounter;
listRestrict = "no-restrict";
overlayShow = "hidden";
}
else
{
listRestrict = "no-restrict";
overlayShow = "hidden";
}
根據ChecklistPriorityLevel
值確定在Module1
顯示疊加,Module3
等,但由於Module2
之前Module1
負載的ChecklistPriorityLevel
在Module1
的價值始終爲0。
發起在被稱爲每個模塊中的局部視圖的代碼是這樣的:
@if (moduleRestrict && !(moduleRestrictPriorityLevel <= checklistPriority) && !Model.GetValue<bool>("moduleRestrictBypass"))
{
const string moduleLockMessage = "This section is locked.";
<div class="module overlay show">
<img src="/assets/myapp/images/lock.png" alt="Module Lock">
<p>@moduleLockMessage</p>
</div>
}
模型相對碼只是一個普通的獲取,設置在這一刻:
namespace MyApp.Core.MySite.Models
{
/// <summary>
/// Model for MySite.
/// </summary>
public class MyAppInfoModel
{
... //other models
[Ignore]
public int ChecklistPriorityLevel { get; set; }
}
}
所以我的問題是如何獲得這一模式的價值的變化來觸發其他模塊的變化(部分視圖)已經加載?
免責聲明:我爲了隱私目的更改了一些實際的代碼。我只是想提供足夠的信息讓觀衆瞭解我想要做的事情。我正在尋找最佳選擇,無論是異步還是其他任何方法,都可以正確地獲取其他部分視圖中的值,而不管首先加載哪些部分。