pages/namespaces
webconfig 의 요소에서 네임 스페이스를 가져 오는 데 사용해야하는 마술이 있습니까?
<pages>
<namespaces>
<add namespace="System.Web.Mvc"/>
<add namespace="System.Web.Mvc.Ajax"/>
<add namespace="System.Web.Mvc.Html"/>
<add namespace="System.Web.Routing"/>
<add namespace="System.Web.WebPages"/>
<add namespace="System.Web.Helpers"/>
<add namespace="MyCustomHelpers"/>
</namespaces>
</pages>
위의 작업 은 원하지 않습니다 . @using MyCustomHelpers
페이지 맨 위에 배치하면 마술처럼 작동 하기 때문에 네임 스페이스가 정상 이라는 것을 알고 있습니다.
이것은 모든 페이지의 맨 위에 Html.SomeFunction()
놓지 않고도 작업 할 수 있도록하기 위한 것입니다.@using
답변
업데이트 : MVC 3 RC : Razor HtmlHelper Extensions (또는 뷰의 다른 네임 스페이스)에 적용되는 업데이트 된 답변을 확인하십시오.
MVC 3 Preview 1과 MVC 3 Beta (오늘 출시) 사이에서 변경되었습니다. Preview 1에서 Razor는 WebForms 네임 스페이스 구성 섹션을 사용했습니다. 그러나 베타에는 WebForms와 분리 된 새로운 구성 섹션이 있습니다. 다음 사항을 web.config 파일에 추가하거나 템플릿에서 새 프로젝트로 시작해야합니다.
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>
<system.web.webPages.razor>
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="MyCustomHelpers" />
</namespaces>
</pages>
</system.web.webPages.razor>
참고 닫으하고 변경 에디터으로 뽑힐 할 파일을 다시해야 할 수도있다.
web.config에서 Razor가 MVC3 Beta에서 작동하도록하는 데 필요한 다른 변경 사항이 있으므로 ~\View\Web.config
베타 프로젝트 템플릿에 포함 된 파일을 살펴 보는 것이 가장 좋습니다 .
답변
네임 스페이스 선언을 Web.config
루트 “Views”폴더 및 / 또는 현재 영역의 “Views”폴더 (보기 위치에 따라)에 넣으면 예상대로 작동합니다.
답변
모든 면도기 페이지에 사용자 정의 네임 스페이스를 추가하는 방법을 설명하는 http://weblogs.asp.net/mikaelsoderstrom/archive/2010/07/30/add-namespaces-with-razor.aspx 를 찾았습니다 .
기본적으로 이것을 만들 수 있습니다
using Microsoft.WebPages.Compilation;
public class PreApplicationStart
{
public static void InitializeApplication()
{
CodeGeneratorSettings.AddGlobalImport("Custom.Namespace");
}
}
AssemblyInfo.cs에 다음 코드를 넣습니다.
[assembly: PreApplicationStartMethod(typeof(PreApplicationStart), "InitializeApplication")]
InitializeApplication 메소드는 global.asax에서 Application_Start 전에 실행됩니다.
답변
그만한 가치가있는 또 다른 기술은 기본적으로 뷰 엔진에 이미 포함되어있는 System 네임 스페이스에 도우미 확장 클래스를 추가하는 것입니다. 예를 들면 다음과 같습니다.
namespace System.Web.Mvc
{
public static class HtmlHelper_MyExtensions
{
...
}
}
이런 식으로, 클래스를 포함하는 라이브러리가 참조되는 한 모든 것이 볼 수 있습니다. System.Web.Mvc
클래스를 확장하고 있으므로 확장 메서드를 동일한 네임 스페이스에 넣는 것이 합리적으로 허용됩니다.
답변
루트보기에서 web.config가 변경되었는지 확인한 후보기를 닫았다가 다시 열어보십시오.
닫고 다시 열면 문제가 해결되었습니다.
여기를 보아라: