J'ai une vue qui charge un ensemble de modules (nous dirons d'autres vues partielles) lorsque la vue est rendue.Valeur de modèle de mise à jour dans un rasoir précédemment chargé Vue partielle
Alors, pensez comme ça dans la vue principale:
<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>
Il y a une valeur de modèle qui est modifié dans la vue partielle Module2.cshtml
. En fait, il est modifié dans l'action pour la vue Module2
. Je suis en train de la valeur du modèle dans 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";
}
En fonction de la valeur ChecklistPriorityLevel
est détermine si une superposition est montrée dans Module1
, Module3
, etc., mais étant donné que Module1
charges avant Module2
, la valeur de ChecklistPriorityLevel
dans Module1
est toujours initiée à 0.
le code dans la vue partielle qui est appelé dans chaque module est quelque chose comme ceci:
@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>
}
Le code relatif dans le modèle est juste un get régulier, fixé à ce moment:
namespace MyApp.Core.MySite.Models
{
/// <summary>
/// Model for MySite.
/// </summary>
public class MyAppInfoModel
{
... //other models
[Ignore]
public int ChecklistPriorityLevel { get; set; }
}
}
Donc, ma question est de savoir comment puis-je obtenir le changement de la valeur de ce modèle pour déclencher le changement dans d'autres modules (vues partielles) qui ont déjà été chargées?
AVIS DE NON-RESPONSABILITÉ: J'ai changé une partie de mon code actuel à des fins de confidentialité. J'essaie juste de donner assez d'informations pour que les téléspectateurs comprennent ce que j'essaie de faire. Je suis à la recherche de la meilleure option, qu'elle soit asynchrone, ou autre, pour obtenir correctement la valeur dans d'autres vues partielles, indépendamment des partiels qui se chargent en premier.