2011-03-21 3 views
9

전체 오류 텍스트 :HTML을 헬퍼

The type arguments for method 'System.Web.Mvc.Html.DisplayExtensions.DisplayFor<TModel,TValue>(System.Web.Mvc.HtmlHelper<TModel>, System.Linq.Expressions.Expression<System.Func<TModel,TValue>>)' cannot be inferred from the usage. Try specifying the type arguments explicitly. 

그것은 최근에 내가이 기능에 영향을 미치는 변경 한 믿을 수 없어하지만, 일이 시작했다. 그것은 VS intellisense 오류를 throw하지만 페이지는 잘 작동합니다.

"For"헬퍼가 아닌 Html 헬퍼는 정상적으로 작동하며,이 표현식을 포함하는 헬퍼입니다.

기분을 상하게하는 마크 업 (100 단위의 1 예) :

<%: Html.DisplayFor(model => model.PortfolioName) %>  

페이지 지침 :

<%@ Page Language="C#" Inherits="ViewPage<My.Namespace.PortfolioViewModel>" %> 

보기 모델 : 그것은 바보 같은 소리

namespace My.Namespace 
{ 
    public class PortfolioViewModel 
    { 
     [Required(ErrorMessage = " ")] 
     [DataType(DataType.Text)] 
     [DisplayName("Portfolio Name:* ")] 
     public string PortfolioName { get; set; } 
    } 
} 
+0

'컴파일시 오류가 발생하지만 페이지는 정상적으로 작동합니까? '라는 것은 무엇을 의미합니까? 컴파일 할 수없는 경우 페이지가 어떻게 작동합니까? 디자인 모드에서 Visual Studio Intellisense 오류입니까? –

+0

예, 맞습니다. 더 분명해야 했어. –

+0

문제를 재현 할 수 없습니다. 형식 인수를 명시 적으로 지정하려고하면 어떻게됩니까? – DEHAAS

답변

4

, 나도 알아,하지만이 닫고 VS를 다시 열어 보았습니까?

+0

아, 예, 폐쇄/재개, 깨끗한/재건, 모든 내 참조를 확인한 4 배 체크 시도했습니다. –

0

Html.DisplayFor 메서드는 지정된 유형에 적합한 디스플레이 템플릿을 찾습니다. 예외는 다소 이상하게 보일 수 있지만 표시 유형이 문자열 유형에 대해 등록되지 않았 음을 나타낼 수 있습니다.

테스트 목적으로 Html.LabelFor을 시도해보십시오. 문자열을위한 특별한 디스플레이 템플릿이 있습니까?

+1

DisplayFor, HiddenFor, TextboxFor, DropDownListFor 등, 등등 같은 결과가 있습니다. –

+0

방금했는데 테스트 프로젝트. 특수 디스플레이 템플릿이 없으면 MVC는 HTML 스트림에 원시 텍스트를 인쇄합니다. 최소한 문자열의 경우입니다. – DEHAAS

2

이전에이 문제가 발생했을 때 MVC 버전을 업그레이드하고 web.config 참조가 제대로 업데이트되지 않은 것입니다. 이것은 뷰가 이전 버전의 HTML 확장 메소드에 대한 참조에 의존한다는 것을 의미했습니다.

참조를보고 버전이 올바른지 확인하십시오.

+0

초보자도이 문제를 해결할 수 있도록 좀 더 평신도 용어로 설명 할 수 있습니까? 친절하게 제발 정교하게. – Unbreakable

관련 문제