работает над созданием интерфейса, чтобы модульный подход к пользовательскому интерфейсу, фон:MVC4 - Форма данных и освежает динамически оказанной зрения
Позволяет пользователям перетаскивать модуль на DIV сообщения Jquery обратно в контроллер с модулем и панелью именами контроллера возвращает JsonResult, содержащее мнение, которое было вынесено, специфичное для данного модуля
Вот изображение пользовательского интерфейса, так что вы можете сортировать увидеть, что я делаю:
Теперь, что я пытаюсь сделать, находится в том, что JsonResult (который содержит строковый вывод рендеринга представления), сохраняет некоторые данные обратно в модель и обновляет динамически визуализированный вид, так что просто панель (Где было показано представление) обновления.
Звучит сложно, я знаю, так что здесь какой-то код:
[AcceptVerbs(HttpVerbs.Post)]
public JsonResult AddModule(string id, string returnTo)
{
string content = RenderView(id);
return Json(new { Target = returnTo, Content = content });
}
private string RenderView(string moduleName)
{
string result = "";
ContentModule module = (ContentModule)Activator.CreateInstance(Type.GetType("TrustMRM.BLL.ContentModules." + moduleName + ",TrustMRM.BLL"));
module.TrustID = Settings.Default.TrustID;
module.DataBind();
this.ViewData.Model = module;
using (var sw = new System.IO.StringWriter())
{
ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(this.ControllerContext, moduleName);
var viewContext = new ViewContext(this.ControllerContext, viewResult.View, this.ViewData, this.TempData, sw);
viewResult.View.Render(viewContext, sw);
result = sw.GetStringBuilder().ToString();
}
return result;
}
Выше, что обрабатывает «падение» модуля. У меня есть абстрактный класс, ContentModule и реализация BLLForumModule, есть сопоставление вида BLLForumModule.cshtml, который создается и возвращается в этой строке, сильно привязанный к BLLForumModule.
Что визуализируется это выпадающий список, равный некоторым данным, чтобы настроить этот конкретный модуль:
@model TrustMRM.BLL.ContentModules.BLLForumModule
@{
Layout = null;
}
@if (Model.IsConfigured)
{
<span>I am configured</span>
}
else
{
using (Html.BeginForm("RefreshModule", "Home"))
{
<h3 class="panelHeader">@Html.DisplayTextFor(m => m.Title)</h3>
<span>Select group</span>
@Html.DropDownListFor(m => m.SelectedGroupID, Model.GroupSelection.Select(t => new SelectListItem { Text = t.GroupName, Value = t.GroupID.Value.ToString() }));
@Html.HiddenFor(x => x.ModuleID);
<input type="submit" value="Ok" />
}
}
Теперь, я уверен, что вернуться, или как справиться с этой должности для того, чтобы обновить это представление, которое было отображено в виде строки и отправлено назад, любое понимание этого, и если кто-то сделал что-то подобное раньше, возможно, мое рендеринг представления строки является неправильным подходом?
код, чтобы принять форму пост:
public ActionResult RefreshModule(string ModuleID)
{
return View();
}
(не работает)
Пожалуйста, повторно задать, это не Asp-классик, это asp.net. –
Я могу обойти это, используя jQuery для публикации значений модели и идентификатора модели обратно в контроллер и повторного отображения представления снова в результате JSON, если нет более оптимизированного подхода –