Reputation: 727
I am re-writing a website in VS 2017 that was originally written in VS 2010. The command I used originally to display my visitor count in the footer was:-
@Html.RenderPartial( "/Counter/Counter.ascx", new ViewDataDictionary {{ "digits", 6 }, { "id", "Count" }})
. This displayed the number in Count.txt as 6 digits using digits.gif as the pattern. When I try and use the same code in VS 2017, I get the following error message: 'ViewDataDictionary' does not contain a constructor that takes 0 arguments
. I have spent a lot of time looking at similar questions in this forum and on other sites and have been unable to find an answer. Any help you can give me will be most appreciated.
Upvotes: 0
Views: 1825
Reputation: 4608
Another way to use this is to pass the ViewData
of the current view into the constructor. That way the new ViewDataDictionary
gets extended with the items you put in using the collection initializer.
@Html.Partial("MyPartial", new ViewDataDictionary(ViewData) { { "digits", 6 } })
Upvotes: 3
Reputation: 3112
When i went to implementation of the ViewDataDictionaryo:
namespace Microsoft.AspNetCore.Mvc.ViewFeatures
{
public ViewDataDictionary(IModelMetadataProvider metadataProvider,
ModelStateDictionary modelState);
}
Possible solution
new ViewDataDictionary(
new Microsoft.AspNetCore.Mvc.ModelBinding.EmptyModelMetadataProvider(),
new Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateDictionary())
{{ "digits", 6 }, { "id", "Count" }}
Upvotes: 1