2011-03-21 57 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錯誤,但這些頁面的功能很好。

HTML輔助不在「對於」幫教工作得很好,它只是包含這些表情的人。

違規的標記(100S的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錯誤? – 2011-03-21 21:33:32

+0

是的,這是正確的。應該已經更清楚了。 – 2011-03-21 21:35:11

+0

我似乎無法複製該問題。如果您嘗試顯式指定類型參數,會發生什麼情況? – DEHAAS 2011-03-21 22:41:34

回答

4

這聽起來很愚蠢,我知道,但有你試過關閉並重新打開VS?

+0

噢亞,我已經試過關閉/重新開放,清潔/重建,四檢查了我的所有引用等 – 2011-03-21 22:30:39

0

Html.DisplayFor方法將找到指定的類型合適的顯示模板。這個異常似乎有點奇怪,但它可能表明沒有顯示模板已經被註冊爲字符串類型。

你可能想嘗試Html.LabelFor用於測試目的。你有特殊的字符串顯示模板嗎?

+1

我有DisplayFor,HiddenFor,TextboxFor,DropDownListFor,等,等,等 – 2011-03-21 22:34:33

+0

相同的結果我只是做了一個快速測試項目。如果沒有特殊的顯示模板,MVC會將原始文本打印到html流中。至少對於字符串是這種情況。 – DEHAAS 2011-03-21 22:39:07

2

當我遇到這個問題以前,它是我們升級MVC版本和web.config引用沒有正確更新後。這意味着視圖依賴於舊版HTML擴展方法的引用。

看看你的參考,並確保版本是正確的。

+0

你能解釋一個更通俗的術語,以便初學者也可以解決這個問題。請詳細說明。 – Unbreakable 2017-03-31 01:05:04