Tuesday, June 4, 2024
Homepage · c#
 Popular · Latest · Hot · Upcoming
9
rated 0 times [  16] [ 7]  / answers: 1 / hits: 40597  / 9 Years ago, fri, may 8, 2015, 12:00:00

I have tried for hours to get this working, and I am really hoping one of you knows (a heck of a lot) more about this than I. When the client keys up in a textbox, I would like to call the MVC C# controller method called updateOrder(). Ideally, I would like to access form elements with a FormCollection (the form is called createOrder).



In the controller, I have:



C#



[WebMethod]
public static void updateOrder(){
string s = asdf;
}


The string declaration above is breakpointed. In the view, I have a method I basically copy and pasted that I found on stackoverflow:



JavaScript



function updateOrderJS() {
var $form = $('form[id=createOrder]');
$.ajax({type : POST,
url : $form.attr('action'),
data : $form.serialize(),
error : function(xhr, status, error) {},
success : function(response) {
updateOrder();
}
});
return false;
}


The event is simply:



JavaScript



updateOrderJS();


The updateOrderJS() method fires (checked with an alert), but the breakpoint does not.


More From » c#

 Answers
14

In Asp.Net MVC, you do not need to decorate your method with WebMethod. You just create an Action (which is a method) and return a result from it. For sample:



public class CustomerController : Controller 
{
public ActionResult Index()
{
return View();
}

[HttpPost]
public ActionResult UpdateOrder()
{
// some code
return Json(new { success = true, message = Order updated successfully }, JsonRequestBehavior.AllowGet);
}
}


And in your View, you could try a javascript like this (using the $.ajax jquery method -- see the comments):



$.ajax({
url: '@Url.Action(UpdateOrder)', // to get the right path to controller from TableRoutes of Asp.Net MVC
dataType: json, //to work with json format
type: POST, //to do a post request
contentType: 'application/json; charset=utf-8', //define a contentType of your request
cache: false, //avoid caching results
data: {}, // here you can pass arguments to your request if you need
success: function (data) {
// data is your result from controller
if (data.success) {
alert(data.message);
}
},
error: function (xhr) {
alert('error');
}
});

[#66667] Thursday, May 7, 2015, 9 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
tye

Total Points: 415
Total Questions: 103
Total Answers: 116

Location: Iraq
Member since Fri, Jun 5, 2020
4 Years ago
;