В настоящее время я работаю над порталом, используя jQuery portlets / sortable / draggable, который также включает систему управления контентом, все в ASP.NET MVC 2. Только администраторы могутизменить макет / содержание сайта в настоящее время.
Каждое представление получает персонализацию для страницы (из базового контроллера) на основе Controller и Action.Затем представление перебирает виджеты и вызывает рендеринг для каждого из них.
В настоящее время у меня есть действия View + "Edit" для каждого вида, чтобы перевести страницу в режим редактирования.Поскольку я дублирую код, должен быть лучший способ, но я не вижу его на всю жизнь!
Как бы вы реализовали действие, позволяющее редактировать каждый вид?
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);
}
// Это базовый контроллер
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;