ASP.NET MVC, ajax, обновление нескольких div-ов
А что именно не нравится? Получается json с нужными полями, проставляется $("#mydiv").text — самый прямой способ.
А что именно не нравится?В ASP.NET MVC проблема сгенерировать несколько HTML кусков. Ну то есть вроде решения есть, но это типа хаков.
Получается json с нужными полямия имею ввиду, что HTML формируется на сервере, поскольку с серверным шаблонизатором проще работать
правильное решение: формируешь json, где элементами являются куски html-ей, а дальшей через $(#mydiv).html(..) заменяешь.
зы
>В ASP.NET MVC проблема сгенерировать несколько HTML кусков. Ну то есть вроде решения есть, но это типа хаков.
наговариваешь на asp.net mvc.
зы
>В 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, хочется просто окружать кусок лямбдой
.>А проблемы начинаются с метода RenderPartialToString.
он нафиг не нужен, т.к. есть Html.Partial
можно сделать все без хаков, делая склейку и генеря json во вью, но удобнее делать маленький хак: получать из контроллера доступ к view (через ручное создание htmlhelper-а при этом json будет генерить сам asp.net mvc
будет так
где this.Html
он нафиг не нужен, т.к. есть 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
он нафиг не нужен, т.к. есть Html.Partial
. Странно, что в интернетах много пишут про реализации RenderPartialToString, а про Html.Partial мне не встретилось, ну да ладно, может это просто устаревшая инфа.А по удобству использования по той ссылке немного удобнее. Анонимные классы и такие json объекты избыточны, проще описывать сразу мепинг id-шников div-ов на имена partial view-шек.
P.S. формат передачи можно и json-ом сделать, а не явным скриптом, но это всё заворачивается в один общий метод.
>Анонимные классы и такие json объекты избыточны, проще описывать сразу мепинг id-шников div-ов на имена partial view-шек.
так тоже должно работать
так тоже должно работать
...
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-и.... эх...