MVC controller is being called twice

Posted by rboarman on Stack Overflow See other posts from Stack Overflow or by rboarman
Published on 2010-05-01T18:43:48Z Indexed on 2010/05/01 18:47 UTC
Read the original article Hit count: 827

Filed under:
|

Hello,

I have a controller that is being called twice from an ActionLink call.

My home page has a link, that when clicked calls the Index method on the Play controller. An id of 100 is passed into the method. I think this is what is causing the issue. More on this below.

Here are some code snippets:

Home page:

<%= Html.ActionLink(“Click Me”, "Index", "Play", new { id = 100  }, null) %>

Play Controller:

public ActionResult Index(int? id)
{
        var settings = new Dictionary<string, string>();

        settings.Add("Id", id.ToString());

        ViewData["InitParams"] = settings.ToInitParams();

        return View();
}

Play view:

<%@ Page Title="" Language="C#" Inherits="System.Web.Mvc.ViewPage" %>

(html <head> omitted for brevity)

<body>
    <form id="form1" runat="server" style="height:100%">

Hello

    </form>
</body>

If I get rid of the parameter to the Index method, everything is fine. If I leave the parameter in place, then the Index method is called with 100 as the id. After returning the View, the method is called a second time with a parameter of null.

I can’t seem to figure out what is triggering the second call.

My first thought was to add a specific route like this:

routes.MapRoute(
    "Play", // Route name
    "Play/{id}", // URL with parameters
    new {controller = "Play", action = "Index"} // Parameter defaults
    );

This had no effect other than making a prettier looking link.

I am not sure where to go from here.

Thank you in advance.

Rick

© Stack Overflow or respective owner

Related posts about asp.net-mvc-2

Related posts about asp.net-mvc