Je travaille actuellement sur un portail utilisant jQuery portlets/sortable/draggable qui comprend également un système de gestion de contenu, le tout dans ASP.NET MVC 2. Seuls les administrateurs sont en mesure de modifier la mise en page/contenu du site actuellement.ASP.NET MVC portail/CMS - conception de contrôleur et de widget?
Chaque vue obtient la personnalisation d'une page (à partir du contrôleur de base) en fonction du contrôleur et de l'action. Ensuite, la vue passe à travers les widgets et appelle l'action de rendu pour chacun d'entre eux.
Actuellement, j'ai des actions View + "Edit" sur chaque vue pour mettre la page en mode d'édition. Comme je duplique du code, il doit y avoir un meilleur moyen, mais je ne peux pas le voir pour la vie de moi!
Comment implémenteriez-vous une action qui permet à chaque vue d'être éditée?
public ActionResult Legal()
{
PageModel model = GetPageSetting();
return View("Portal", model.PageSetting.Master.Path, model);
}
[HttpPost]
[Authorize(Roles = "Administrator")]
public ActionResult LegalEdit(EditorModel e)
{
PageModel model = GetPageSetting("Legal", "Home", true);
return View("Portal", model.PageSetting.Master.Path, model);
}
// Ceci est dans le contrôleur de base
protected PageModel GetPageSetting(string action, string controller, bool isEditing)
{
PersonalizationProcess personalizationProcess = new PersonalizationProcess();
string path = string.Format("~/{0}/{1}", controller, action);
string userName;
bool isAuthenticated;
if (User == null)
{
userName = "TestUser";
isAuthenticated = false;
}
else
{
userName = User.Identity.Name;
isAuthenticated = User.Identity.IsAuthenticated;
}
PageSetting setting = personalizationProcess.GetPageSetting(userName, isAuthenticated, path);
PageModel model = new PageModel();
model.Act = action;
model.Con = controller;
model.IsEditing = isEditing;
model.PageSetting = setting;
return model;
J'ai ajouté le code pour une vue sur la page du portail. Le site doit aussi être SEO, donc je ne peux pas simplement rendre les widgets et faire des ajax callbacks non plus. –