Пользовательские расширения полей HTML MVC3 - PullRequest
0 голосов
/ 29 ноября 2011

Я создаю настраиваемое поле в MVC3 (C #), к которому я хотел бы получить доступ со свойством Html в представлениях. Я хочу поместить его в свой собственный класс, чтобы я мог хорошо организовать код (частные методы и т. Д.), Потому что наш текущий класс Html Extensions слишком шумный.

Вот что я ищу:

ех. @Html.CustomField...

В настоящее время у меня есть этот код:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Matrix.Investigator.Models.Parties;
using Matrix.Investigator.Website.Extensions;

namespace Matrix.Investigator.Website.Fields
{
  public static class DetailsField
  {
    public static MvcHtmlString PartyDetailsField(this HtmlHelper helper, IEnumerable<IDetailsConfiguration> configuation)
    {
      .
      .
      .

      [Some Code for the field]

      return MvcHtmlString.Create([CODE FOR TAG].toString());
    }
  }
}

В любом случае, когда я пытаюсь использовать это в форме, оно не появляется в intellisense:

например: <li>@Html.PartyDetailsField(Model.IdentifierConfiguration)</li>

Однако, если тот же код помещен в файл HtmlHelperExtensions, он работает просто отлично. Я даже не вижу разницы в определении класса.

Есть ли какой-нибудь свет, который можно осветить в этой ситуации ИЛИ мне придется оставить его в классе HtmlHelperExtensions.

1 Ответ

2 голосов
/ 29 ноября 2011

Убедитесь, что вы перенесли пространство имен, в котором определен этот метод расширения, в область видимости:

@using Matrix.Investigator.Website.Fields

или в теге <namespaces> вашего ~/Views/web.config (не ~/web.config), чтобы использовать его глобально во всех ваших представлениях Razor.

Очевидно, что из-за хитрости Intellisense Visual Studio на страницах Razor вам может потребоваться закрыть и снова открыть представление, чтобы оно могло выбрать его. В любом случае, никогда не доверяйте Intellisense Visual Studio в представлениях. Доверьтесь своей интуиции и знаниям. Запуск приложения - лучший способ проверить результат.

...