MVCContrib переносимые области не работают из HtmlExtensions, MVC 3 - PullRequest
1 голос
/ 25 апреля 2011

Я только что реализовал функцию Portable Area в MVCContrib, и она отлично работает.Я могу открыть его, используя: http://localhost/projectname/portableAreaName, но эта переносимая область не работает, если я отрисовываю ее с помощью метода расширения HtmlHelper, например:

public static void  RenderHtmlWidget(this HtmlHelper Html)
{
        Html.RenderAction("Index", "HtmlWidget", new {area = "HtmlWidget"});
}

И вызываем вспомогательный метод в представлении как таковой:

@using Project.Widgets.HtmlWidget;
@{Html.RenderHtmlWidget();}

Я получаю сообщение об ошибке: Представление 'Index' или его мастер не найдены, или никакой движок представления не поддерживает найденные местоположения. В списке возможных местоположений нет ~/ области / ... определены.Но я могу успешно обработать мой HtmlWidget с помощью этой же строки кода в представлении:

@{Html.RenderAction("Index", "HtmlWidget", new { area = "HtmlWidget" });}

Что я делаю неправильно и как мне правильно использовать расширения HtmlHelper с функцией переносимых областей MVCContrib?

1 Ответ

1 голос
/ 23 июля 2011

Есть несколько вещей, которые могут быть причиной этого.

  • В вызывающем / родительском проекте, где вы используете вспомогательный метод для вызова переносимой области, есть ли у вас файл Web.config в папке / Areas /? Если нет, вы должны скопировать файл Web.config, находящийся в папке / Views / того же проекта, и просто поместить новую копию в папку / Areas /.
  • В файле класса Registration в вашем проекте переносной области после вызова MapRoute в методе «RegisterArea» вызываете ли вы «RegisterAreaEmbeddedResources ();»?
  • Каждый вид в вашем проекте переносной области сделан как встроенный ресурс, а не как контент? Выберите представление в обозревателе решений и нажмите F4, для параметра «Действие построения» должно быть установлено значение «Встроенный ресурс», но по умолчанию установлено «Содержимое»
  • Вам также необходимо убедиться, что и проект Portable, и проект-потребитель ссылаются на одну и ту же версию MvcContrib, но они также используют одну и ту же версию ASP.NET MVC. Если на вашу область ссылаются в нескольких проектах, каждый из которых основан на своей версии MVC (маловероятно, но возможно в зависимости от ситуации), ваша область должна использовать любую версию MVC, которую использует проект-потребитель.
  • Я бы также предложил использовать Отладчик маршрутизации .NET Фила Хаака - это единственный файл DLL, на который вы ссылаетесь в приложении-потребителе, и добавление одной строки в ApplicationStart () в вашем Global.asax. CS. Это становится невероятно полезным при определении правильности регистрации вашего переносного участка в базовом проекте - и помогает вам перейти к поиску.
...