ASP.NET MVC, ajax, обновление нескольких div-ов
А что именно не нравится? Получается json с нужными полями, проставляется $("#mydiv").text — самый прямой способ.
А что именно не нравится?В ASP.NET MVC проблема сгенерировать несколько HTML кусков. Ну то есть вроде решения есть, но это типа хаков.
Получается json с нужными полямия имею ввиду, что HTML формируется на сервере, поскольку с серверным шаблонизатором проще работать
зы
>В ASP.NET MVC проблема сгенерировать несколько HTML кусков. Ну то есть вроде решения есть, но это типа хаков.
наговариваешь на asp.net mvc.
зыты учитываешь, что html хочется формировать view engine-ом? а не стринг билдером.
>В ASP.NET MVC проблема сгенерировать несколько HTML кусков. Ну то есть вроде решения есть, но это типа хаков.
наговариваешь на asp.net mvc.
Самое лучшее что удалось нагуглить это вот (см. последний ответ)
http://stackoverflow.com/questions/2483885/how-to-refresh-mu...
А проблемы начинаются с метода RenderPartialToString.
А проблемы начинаются с метода RenderPartialToStringдля Razor-а ситуация вроде неплохая, т.е. там хаки не нужны, чтобы записать в другой TextWriter.
Но всё же хочется еще большего, не хочется в обязательном порядке выделять кусок html-я в partial view, хочется просто окружать кусок лямбдой .
он нафиг не нужен, т.к. есть Html.Partial
можно сделать все без хаков, делая склейку и генеря json во вью, но удобнее делать маленький хак: получать из контроллера доступ к view (через ручное создание htmlhelper-а при этом json будет генерить сам asp.net mvc
будет так
public ActionResult Divs(..)
{
var Html = this.Html;
...
return Json(new { div1 = Html.Partial("Div1", ...).ToString div2 = Html.Partial("Div2", ...).ToString });
}
где this.Html
public static HtmlHelper Html(this Controller controller)
{
if (controller == null)
return null;
return new HtmlHelper(new ViewContext(controller.ControllerContext, new WebFormView("omg" new ViewDataDictionary new TempDataDictionary new System.IO.StringWriter new ViewPage;
}
неплохо , спасибо!
>А проблемы начинаются с метода RenderPartialToString.Html.Partial это и есть RenderPartialToString (и это все на view). Просто я не знал Html.Partial . Странно, что в интернетах много пишут про реализации RenderPartialToString, а про Html.Partial мне не встретилось, ну да ладно, может это просто устаревшая инфа.
он нафиг не нужен, т.к. есть Html.Partial
А по удобству использования по той ссылке немного удобнее. Анонимные классы и такие json объекты избыточны, проще описывать сразу мепинг id-шников div-ов на имена partial view-шек.
P.S. формат передачи можно и json-ом сделать, а не явным скриптом, но это всё заворачивается в один общий метод.
так тоже должно работать
...
var data = new Dictionary<string, string>
data["div1"] = Html.Partial("Div1", ...).ToString;
data["div2"] = Html.Partial("Div2", ...).ToString;
return Json(data);
return new HtmlHelper(new ViewContext(controller.ControllerContext, new WebFormView("omg" new ViewDataDictionary new TempDataDictionary new System.IO.StringWriter new ViewPage;
здесь new WebFormView("omg") и new System.IO.StringWriter смотрятся лишними. Я посмотрел рефлектором, действительно, можно без них. И в интернете тоже такое решение есть:
http://craftycodeblog.com/2010/05/15/asp-net-mvc-render-part...
То есть можно совсем без хаков .
Оставить комментарий
6yrop
Как такое делается?В Интернете в принципе есть несколько вариантов, но мне не один не нравиться...
Если вы это делали напишите, пожалуйста, как.
P.S. а вWebForms-ах были updatepanel-и.... эх...