简体   繁体   中英

Call a method from button click in ASP.net, using controller

am new to ASP.net. Am trying to have a simple page view that has a button and when clicked, this would call a method that is in a controller, to then do more code and computation with c#.

I read posts and tried this but the method does not seem to be called, the debugger never stops in the Controler ClickButton1 method.

My VIEW code

 <div> <input id="Button1" type="button" value="Button 1" onclick="ClickButton1()" /> <input id="Button2" type="button" value="Button 2" onclick="location.href='@Url.Action("Options", "Home")'" /> </div> <div> <canvas id="mapCanvas" width="500" height="150" style="border:1px solid #000000;"></canvas> </div> <script> function ClickButton1() { $.ajax({ type: "POST", url: '@Url.Action("ClickButton1", "Definition")', async: true, success: function (msg) { ServiceSucceeded(msg); }, error: function () { return "error"; } }); } </script> 

My CONTROLLER

 namespace Traveler.Controllers { public class DefinitionController : Controller { // GET: /<controller>/ public IActionResult Index() { return View(); } // Action click on Button 1 public void ClickButton1() { Console.WriteLine("Button 1 Clicked"); } } } 

Change the input type to button from submit to avoid multiple submit.

Mark you Controllers method as [HttpPost] and try again.

If you are wondering why should you do that, read this:

The [HttpPost] attribute tells the routing engine to send any POST requests to that action method to the one method over the other. This is a type of overloading.

If you are wondering how to mark you Method as a [HttpPost] method, look at this:

[HttpPost]
public void ClickButton1()
{
    Console.WriteLine("Button 1 Clicked");
}

I hope this will help you :)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM