How do I set up routes to enable me to call different actions on the same controller?
- by Remnant
I am building my first asp.net mvc application for learning and development purposes and have come across an issue that I'd like some guidance with.
Suppose I have a controller with two actions as follows:
public class MyController : Controller
{
public ActionResult Index()
{
dbData = GetData("DefaultParameter")
return View(dbData);
}
public ActionResult UpdateView(string dbParameter)
{
dbData = GetData("dbParameter");
return View(dbData);
}
}
On my webpage I have the following:
<% using (Html.BeginForm("UpdateView", "MyController")) %>
<% { %>
<div class="dropdown"><%=Html.DropDownList("Selection", Model.List, new { onchange="this.form.submit();" })%></div>
<% } %>
I have the following route in Global.asax:
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute("Default", "{controller}", new { controller = "MyController", action = "Index"});
}
The issue I am having is as follows:
When I use the dropdownlist I get an error saying that /MyController/UpdateView could not be found. It therefore seems that I need to add an additional route as follows:
routes.MapRoute("Default", "{controller}", new { controller = "MyController", action = "UpdateView"});
However, this causes two new issues for me:
Due to the hierachy within the routing list, the similarity of the routes means that the one that appears first in the list is always executed.
I don't see why I need to create another route for UpdateView. All I want to do is to retrieve new data from the database and update the view. I don't see what this has to do with the URL schema.
It feels like I have gone down the wrong track here and I have missed something quite fundamental?