none
Вывод всех контроллеров и действий в Html контролах. (Asp.Net MVC 3 + Razor) RRS feed

  • Вопрос

  • Всем добрый день!

    Все кто работает с ASP.NET MVC 3 + Razor известны такие контролы как: Html.Action, Html.RenderPartial, Html.RenderAction и многие другие.

    У всех этих контролов, есть такие параметры как Action и Controller.

    Когда ты встаешь в место ввода контроллера, IntelliSense показывает все доступные контроллеры, а после того, как мы укажем контроллер, становятся доступными все Action'ы для данного контроллера.

    Вопрос: Как организовать подобную подсветку в своих контролах? 

    Заранее спасибо!



    • Изменено vikaz 30 июля 2012 г. 11:55
    30 июля 2012 г. 11:55

Ответы

  • В стандартном IntelliSense нет допечатки имен Action-ов (по крайней мере в моей 2012-й студии). У вас скорее всего допечатывает решарпер, в нем встроенная поддержка стандартных методов.
    • Помечено в качестве ответа vikaz 30 июля 2012 г. 15:01
    30 июля 2012 г. 14:22

Все ответы

  • IntelliSense показывает все классы, а контроллеры это такие же обычные классы. Это везде работает так. А что Вы подразумеваете под "свои контролы"?
    30 июля 2012 г. 12:03
    Модератор
  • Для примера создаем простой контрол:

    public static class HtmlExtensions
        {
            public static MyControl Control(this HtmlHelper htmlHelper, object htmlAttributes = null)
            {
                return new MyControl(htmlHelper, htmlAttributes);
            }
        }
    
        public class MyControl
        {
            public MyControl(HtmlHelper htmlHelper, object htmlAttributes) { }
    
            public MyControl SetAction(string actionName, string controllerName)
            {
                return this;
            }
    
            public IHtmlString Render()
            {
                return new HtmlString("<h1>Test</h1>");
            }
        }

    Если мы введем во вьюшке код:

    @Html.Control().SetAction("","").Render()

    То IntelliSense не сработает и не покажет нам все контроллеры и действия проекта.

    Вот и хотел узнать, как заставить работать IntelliSense.

    30 июля 2012 г. 13:18
  • В стандартном IntelliSense нет допечатки имен Action-ов (по крайней мере в моей 2012-й студии). У вас скорее всего допечатывает решарпер, в нем встроенная поддержка стандартных методов.
    • Помечено в качестве ответа vikaz 30 июля 2012 г. 15:01
    30 июля 2012 г. 14:22
  • Надо вставлять графику, чтобы все поняли!

    Мой контрол:

    Из этих картинок, можно увидеть, что во втором случае не появляется всплывающее окно, в котором можно выбрать готовый Action и Controller. Хотя как в первом случае так и во втором, у нас string и имена совпадают. Я сейчас удалю ReSharper, так сказать, для чистоты эксперимента, но мне кажется, что это не повлияет. Хотя, могу ошибаться.

    30 июля 2012 г. 14:45
  • PashaPash, Вы были правы. Это срабатывал ReSharper.  :(

    Грустно...

    Спасибо Вам за ответ!
    • Изменено vikaz 30 июля 2012 г. 15:01
    30 июля 2012 г. 15:01