This may be a silly question and is more of a question about how to do something rather than an actual coding issue.
I want to have a partial view which contains a search form and search results and uses model
The model item passed into the dictionary is of type 'x', but this dictionary requires a model item of type 'y'.
You can definitely do that with different implementations.
You can drop the Model from the "Shared" view that you have and have it work with a ViewBag or ViewData that you pass to the view from your controllers. Obviously you will need to populate this view bag or view data within all the controller actions that will return this shared partial view.
Instead of having Suppliers as the view model of the shared view, you can have another property in the view model "Supplier" that you can use, but when you are rendering the shared view you need to specify the property and pass it as the Model to the shared view like:
Now you have to do the same thing for all other views that render this shared and basically have this "SharedViewModel" as a property in those view models and pass the
Model.SharedViewModel to the shared view.
For sure there are other options too that you can find out once you get more comfortable with Shared Views in MVC.