I have the Home Controller and my Action name is Index. In My route config the routes like below.
routes.MapRoute(
\"Default\", // Route name
\"{c
try changing the index action to this:
public ActionResult Index(int? id = null)
{
return View();
}
This should do the trick. So you can pass the id as a param with the "/{value}" or just use "/?id={value}"
For Attribute Routing in ASP.NET MVC 5
decorate your controller like this
[RoutePrefix("Home")]
public HomeController : Controller {
//GET Home/Index
[HttpGet]
[Route("Index")]
public ActionResult Index() {
return View();
}
}
And enable it in route table like this
public class RouteConfig {
public static void RegisterRoutes(RouteCollection routes) {
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
//enable attribute routing
routes.MapMvcAttributeRoutes();
//convention-based routes
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = "" }
);
}
}
Please check here for information on routing: http://www.asp.net/mvc/overview/older-versions-1/controllers-and-routing/asp-net-mvc-routing-overview-cs
Most likely, default routing should be something like below:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
Also, looks like the Index Action Method is missing a parameter, see below:
public ActionResult Index(string id)
{
return View();
}
Try placing string id
in your Index method.
public class URLRedirectAttribute : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
string destinationUrl = "/VoicemailSettings/VoicemailSettings";
filterContext.Result = new JavaScriptResult()
{
Script = "window.location = '" + destinationUrl + "';"
};
}
}