Разделите шаблон пейджера ng-table на странице *.cshtml и повторное использование, когда это потребуется.

Я использую ngTable для отображения данных в моем проекте ASP.net MVC. В этой директиве я использую шаблон пейджера, как показано ниже.

Вот шаблон страницы.

<!-- Pager Template -->

Мой вопрос в том, как я могу отделить его от моего *.cshtml файла и использовать, когда это необходимо для других страниц? В этот момент, когда я использую один и тот же блок кода снова и снова на каждой странице. Поэтому, если вы можете имитировать свое решение на Plunk, он очень ценит.

1 ответ

как насчет этого

ControllerExtension.cs

public static class ControllerExtension
{ public static string RenderRazorViewToString(this Controller cont, string viewName, object model) { cont.ViewData.Model = model; using (var sw = new StringWriter()) { var viewResult = ViewEngines.Engines.FindPartialView(cont.ControllerContext, viewName); var viewContext = new ViewContext(cont.ControllerContext, viewResult.View, cont.ViewData, cont.TempData, sw); viewResult.View.Render(viewContext, sw); viewResult.ViewEngine.ReleaseView(cont.ControllerContext, viewResult.View); return sw.GetStringBuilder().ToString(); } } public static ContentResult NgTemplate(this Controller cont, string viewPath) { return new ContentResult() { Content = RenderRazorViewToString(cont,viewPath, null), ContentEncoding = Encoding.Default, ContentType = "text/ng-template" }; }
}

метод RenderRazorViewToString был взят из представления Render в виде строки ваш шаблон

PaginationTemplate.cshtml

<ul> ... </ul>

затем контроллер asp net mvc, например

HomeController

public ActionResult Template() { return this.NgTemplate("PaginationTemplate"); }

а затем, в некоторых случаях, например

Index.cshtml

...
...
<h2> Заметка</h2><p> не забудьте поместить url в действие внутри одинарных кавычек, здесь <code>' url '</code></p><table ng-table="tableParams" template-pagination="'/Home/Template'"> </table>

licensed under cc by-sa 3.0 with attribution.