Как создать UserControl в ASP.NET MVC из строки - PullRequest
1 голос
/ 14 марта 2011

Скажем, я хотел создать пользовательский элемент управления из необработанной строки, а не из файла .ascx, как бы мне это сделать? Временные файлы не вариант. Это вообще возможно? Я ничего не могу найти в Интернете по этому поводу.

Бонус: Как бы я сделал это с новым двигателем бритвы?

Ответы [ 4 ]

1 голос
/ 14 марта 2011

Я думаю, вы просто перешли с обычного asp.net на этот MVC, как и я.

В asp.net mvc мы используем HTML-помощник, например @Html.ActionLink(), @Html.CheckBox() и @Html.CheckBox() youможете добавить свое собственное расширение, например @Html.Grid(), создав такой класс:

using System;
using System.Web.Mvc;

namespace MyNamespace.Helpers
{
     public static class GridExtensions
     {
          public static string Grid(this HtmlHelper helper, <any parameter you think to generate the html>)
          {
               // render the html table here based on the parameter
          }
     }
}

Поместите этот файл класса в папку Helpers под root, если хотите.См. this , чтобы создать собственное расширение.Вы можете найти лучший jQuery, такой как jqGrid и реализовать его в расширении.

Если вы считаете, что расширение не подходит, вы можете использовать свой собственный класс с форматом @ class.method () для возвратастрока HTML.Не забудьте использовать @using MyNamespace в начале файла представления vcshtml ИЛИ в ~ / View / web.config, кроме имени сборки Razor, чтобы убедиться, что класс или расширение доступны.Он также будет поддерживать intellisense.

Если вы хотите определить «UserControl» в том же файле * .cshtml, потому что он просто специфичен для представления, просто используйте @helper function(), как сказал ScottGu здесь он минимизирует код на странице, просто позвонив @function().

asp.net и asp.net mvc полностью отличается с точки зрения Control.Вы не можете использовать какой-либо элемент управления из обычного asp.net в asp.net mvc.

Редактировать : Некоторые опечатки и добавить дополнительную информацию.

0 голосов
/ 29 апреля 2011

Решением было использование VirtualPathProvider для предоставления текста для элементов управления.Пример: http://www.thecodinghumanist.com/Content/VirtualPathProviderExample.aspx

0 голосов
/ 14 апреля 2011

Взгляните на шаблонных делегатов бритвы .Кажется, это то, что вам нужно

0 голосов
/ 14 марта 2011

Вы могли бы использовать для этого специальный HTML-помощник?

...