2017-03-20 10 views
0

VS2007で最初に書かれたVS 2017のWebサイトを書き直しています。最初に私の訪問者数をフッターに表示するコマンドは、 - @Html.RenderPartial("/Counter/Counter.ascx", new ViewDataDictionary {{ "digits", 6 }, { "id", "Count" }})でした。これは、count.txtの数字をdigits.gifをパターンとして使用して6桁の数字として表示しました。 VS 2017で同じコードを試してみると、次のエラーメッセージが表示されます。'ViewDataDictionary' does not contain a constructor that takes 0 arguments私はこのフォーラムや他のサイトでも同様の質問を見て、多くの時間を費やして答えを見つけることができませんでした。あなたが私に与えることができるどんな助けも、最も高く評価されます。私はViewDataDictionaryoの実装に行ってきましたasp.netコア1 RenderPartial ViewDataDictionary

答えて

0

namespace Microsoft.AspNetCore.Mvc.ViewFeatures 
{ 
    public ViewDataDictionary(IModelMetadataProvider metadataProvider, 
              ModelStateDictionary modelState); 
} 

解決策

new ViewDataDictionary(
new Microsoft.AspNetCore.Mvc.ModelBinding.EmptyModelMetadataProvider(), 
new Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateDictionary()) 
{{ "digits", 6 }, { "id", "Count" }} 
+0

ありがとうございました。まず、あなたのコードの前に<@ Html.RenderPartial( "/Counter/Counter.ascx">)が必要であると仮定します。もしそうでなければ、2番目の 'new'ステートメントの前に "Type Expected"私はこの文を<@ Html.RenderPartial( "wwwroot/Counter/Counter.ascx"、新しいMicrosoft.AspNetCore.Mvc.ModelBinding.EmptyModelMetadataProvider() > "'ModelStateDictionary'に 'Add'の定義が含まれていないというエラーメッセージが表示されます..." – xiecs

1

これを使用するもう一つの方法は、コンストラクタに現在のビューのViewDataを渡すことです。そうすれば、新しいViewDataDictionaryは、コレクションイニシャライザを使用して入れたアイテムで拡張されます。

@Html.Partial("MyPartial", new ViewDataDictionary(ViewData) { { "digits", 6 } })