Been подбирая MVC4 и бритву и с мячом, но у меня есть вопрос о подходе за то, что я хочу для того чтобы достигнуть:MVC4 - Razor - Содержание динамического модуля?
У меня есть страница с несколькими панелями на (как приборная панель), и набор значков, которые вы можете перетащить на эти панели, чтобы «установить» модуль на эту панель и отобразить его содержимое. Это замечательно с точки зрения пользовательского интерфейса, теперь я смотрю на закреплять это к чему-то немного пожирнее:
Что у меня есть:
- IContentModule
- Набор конкретных классов для каждого модуля с помощью метода Render()
- контроллер, который обрабатывает событие падения модуля и активатором, чтобы получить экземпляр класса для этого падения модуля
Простой материал, в идеале, я хочу, чтобы каждый модуль отвечал за его собственный контент, но кроме того, что у него есть строка, возвращаемая из Render, есть лучший способ, например, назначить определенную разметку вида для этого конкретного конкретного класса, так что я могу контролировать то, что делается, но гораздо более структурированным образом, задаваясь вопросом, какой лучший подход здесь?
Спасибо за ваше время!
Дэнни
Edit: Сорт думать, если есть способ, чтобы соединить взгляд на мои конкретные классы? например ViewForum.cshtml привязывается к ForumModule.cs, каким-то образом создавая экземпляр представления и получая строку из рендеринга объекта, а затем передавая это обратно через строку, чтобы вставить ее в мою панель?
Пример панели:
<section class="main box droppable" id="MainPanel">
<div class="padding">
Panel 1
</div>
</section>
Событие JQuery
$(".droppable").droppable({
hoverClass: 'boxhover',
drop: function (event, ui) {
$.ajax({
type: "POST",
url: '/Home/AddModule/' + $(ui.draggable).attr("id") + "?returnTo=" + this.id,
success: function(data) {
$("#" + data.Target).html(data.Content);
}
});
}
});
Способ управления
[AcceptVerbs(HttpVerbs.Post)]
public JsonResult AddModule(string id, string returnTo)
{
string content = DemoResolve(id);
try
{
IContentModule module = (IContentModule) Activator.CreateInstance(Type.GetType("Foo.Bar.BLLForumModule,Foo.Bar"));
content = module.Render();
}catch(Exception exp)
{
throw;
}
return Json(new { Target = returnTo, Content = content });
}
Так где я есть, что module.Render(), я» м думать, что я хочу получить частичный вид или что-то подобное и сделать это на основе объекта, который у меня есть.
Не могли бы вы опубликовать код, чтобы показать, что вы пытаетесь сделать?Трудно получить точную картину из того, что вы описываете. – levelnis
Прежде чем кто-нибудь скажет, я знаю, что это лишний улов, я напишу его позже: P ... Активатор будет подключен к идентификатору модуля, который был вернулось назад, возможно, я буду использовать перечисление, чтобы вернуть тип из строки :) –