title: My HttpGet function leads to the wrong page
body: <p>I'm currently working on an C# ASP.NET project, but i'm quite a newbie in html/css. My question is: </p>
  
  <p>On the page : <code>"http://localhost:27253/Default/TcpDump/"</code>, I've a button which activate the function "SimonTest" : When I click on it, it brings me on the page : <code>"http://localhost:27253/Default/TcpDump/SimonTest/2/1"</code>. But what the program should do is : (1) execute the function "SimonTest" and (2) brings me back to the <code>"http://localhost:27253/Default/TcpDump/SimonTest/2/1"</code>. Any idea?</p>
  
  <p>Note : when I manually return to the first page, the button tries to bring me to <code>"http://localhost:27253/Default/TcpDump/TcpDump/SimonTest/2/1"</code></p>
  
  <p>Here is my HttpGet function code</p>
  
  <pre><code>namespace Serene5.Default.Pages
  {
      using Serenity;
      using Serenity.Data;
      using Serenity.Web;
      using System.Web.Mvc;
      using System.Data.SqlClient;
      using System.Data;
  
      [RoutePrefix("Default/TcpDump"), Route("{action=index}")]
      [PageAuthorize(typeof(Entities.TcpDumpRow))]
      public class TcpDumpController : Controller
      {
          public ActionResult Index()
          {
              return View("~/Modules/Default/TcpDump/TcpDumpIndex.cshtml");
          }
  
          [HttpGet]
          [Route("SimonTest/{id=0}/{obj=0}")]
          public ActionResult SimonTest(int id, int obj)
          {
              string[] listColumns = new string[] { "TimeStp", "IdTransmission", "IdSource", "IdDestination", "PortSource", "PortDestination", "ToTheRight", "ToTheLeft" };
              SqlConnection myConn = new SqlConnection(@"Server=(LocalDb)\MSSqlLocalDB;Integrated security=SSPI;database=Serene5_Default_v1");
              string listDb = string.Format("SELECT * FROM [Serene5_Default_v1].[tcpdump].[TCPDump] WHERE IdTransmission = {0}", obj);
              SqlCommand myCommand = new SqlCommand(listDb, myConn);
              string command = "INSERT INTO Serene5_Default_v1.tcpdump.";
              if (id == 1)
              {
                  command += "Errors (";
              }
              else
              {
                  command += "Regeln (";
              }
              string temp = "(";
              myConn.Open();
              SqlDataReader reader = myCommand.ExecuteReader();
              while (reader.Read())
              {
                  for (int i = 0; i &lt; reader.FieldCount - 1; i++)
                  {
                      command += reader[i] + ",";
                      temp += listColumns[i] + ",";
  
  
                  }
                  command += reader[reader.FieldCount - 1];
                  temp += listColumns[reader.FieldCount - 1];
              }
  
              reader.Close();
              command += ") INTO " + temp + ");";
              System.Diagnostics.Debug.WriteLine(command);
              SqlCommand myCommand2 = new SqlCommand(listDb, myConn);
  
              myCommand2.ExecuteNonQuery();
              System.Diagnostics.Debug.WriteLine("Commande exécutée");
              myCommand2.Dispose();
  
  
  
  
              myConn.Close();
              return View("~/Modules/Default/TcpDump/SimonTest.cshtml");
          }
      }
  }
  </code></pre>
  
  <p>The TcpDumpIndex.cshtml contains : </p>
  
  <pre><code>@{
      ViewData["Title"] = Serenity.LocalText.Get("Db.Default.TcpDump.EntityPlural");
  }
  
  &lt;div id="GridDiv"&gt;&lt;/div&gt;
  
  &lt;script type="text/javascript"&gt;
      jQuery(function () {
          new Serene5.Default.TcpDumpGrid($('#GridDiv'), {}).init();
  
          Q.initFullHeightGridPage($('#GridDiv'));
      });
  &lt;/script&gt;
  </code></pre>
  
  <p>I am not really aware of what it means, a guy just told me to put this line in my code in order to refresh my page.</p>
  
  <p>If that can help, here is the code of the file containing the button :</p>
  
  <pre><code>namespace Serene5.Default {
  
      @Serenity.Decorators.registerClass()
      export class TcpDumpGrid extends Serenity.EntityGrid&lt;TcpDumpRow, any&gt; {
          protected getColumnsKey() { return 'Default.TcpDump'; }
          protected getDialogType() { return TcpDumpDialog; }
          protected getIdProperty() { return TcpDumpRow.idProperty; }
          protected getLocalTextPrefix() { return TcpDumpRow.localTextPrefix; }
          protected getService() { return TcpDumpService.baseUrl; }
  
          constructor(container: JQuery) {
              super(container);
          }
          protected getColumns(): Slick.Column[] {
  
              var columns = super.getColumns();
  
              var fld = TcpDumpRow.Fields;
              var time = $.now();
  
              columns.unshift(
                  {
                      field: "Objekte",
                      name: "Objekte",
                      format: ctx =&gt; {
                          var item = ctx.item;  //data for that row
                          return "&lt;a class='modal-link' href='TcpDump/SimonTest/1/" + item.IdTransmission + "' title='Gewöhnlich'&gt;&lt;i class='fa fa-check-circle-o' aria-hidden='true'&gt;&lt;/i&gt;";
                      },
                      width: 120,
                      minWidth: 120,
                      maxWidth: 150
                  });
  
              columns.unshift(
                  {
                      field: "Objekte",
                      name: "Objekte",
                      format: ctx =&gt; {
                          var item = ctx.item;  //data for that row
                          return "&lt;a class='modal-link' href='TcpDump/SimonTest/2/" + item.IdTransmission + "' title='Seltsam'&gt;&lt;i class='fa fa-times-circle-o' aria-hidden='true'&gt;&lt;/i&gt;";
                      },
                      width: 120,
                      minWidth: 120,
                      maxWidth: 150
                  });
              return columns
          }
      }
  }
  </code></pre>