Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MVC controller is being called twice

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.

like image 327
rboarman Avatar asked May 01 '10 18:05

rboarman


People also ask

What is controller in MVC with example?

A controller determines what response to send back to a user when a user makes a browser request. A controller is just a class (for example, a Visual Basic or C# class). The sample ASP.NET MVC application includes a controller named HomeController. cs located in the Controllers folder.

CAN controller have multiple views?

Controller is the boss, so a Controller decides which View to be rendered and Views does not / cannot care which Controller requested the View. You can / will absolutely have multiple Views from a Controller.

How logger is implemented in MVC?

Add a class Log. cs in the Utilities folder. Now, in the constructor of this class, instantiate logs for monitoring and debugger loggers. Here, you need to create Debug(), Error(), Info(), Warn(), Fatal() methods which will call respective methods from Log4 net.


1 Answers

Is there any other markup that could be accidentally referencing the page? Script references, image references, css references, all could be mistakenly pointed at '.' or the current page.

like image 129
Frank Schwieterman Avatar answered Sep 21 '22 20:09

Frank Schwieterman