The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32'
You are expecting an id
parameter in your URL but you aren't supplying one. Such as:
http://yoursite.com/controller/edit/12
^^ missing
in your
WebApiConfig
>> Register ()
You have to change to
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
Here the routeTemplate
, is added with {action}
This error means that the MVC framework can't find a value for your id
property that you pass as an argument to the Edit
method.
MVC searches for these values in places like your route data, query string and form values.
For example the following will pass the id
property in your query string:
/Edit?id=1
A nicer way would be to edit your routing configuration so you can pass this value as a part of the URL itself:
/Edit/1
This process where MVC searches for values for your parameters is called Model Binding and it's one of the best features of MVC. You can find more information on Model Binding here.