55
votes

I submitted a form via jquery, but I need the ActionResult to return true or false.

this is the code which for the controller method:

    [HttpPost]
    public ActionResult SetSchedule(FormCollection collection)
    {
        try
        {
            // TODO: Add update logic here

            return true; //cannot convert bool to actionresult
        }
        catch
        {
            return false; //cannot convert bool to actionresult
        }
    }

How would I design my JQuery call to pass that form data and also check if the return value is true or false. How do I edit the code above to return true or false?

3
I LOVE the simple, boiled down example, which expunges all irrelevant code. Wish 95% of other people, including book writers, would do the same. - Nicholas Petersen
@Eclipsoft Perhaps someone with clout can discuss the idea on meta if it hasn't been covered. - MrBoJangles

3 Answers

90
votes

You could return a json result in form of a bool or with a bool property. Something like this:

[HttpPost]
public ActionResult SetSchedule(FormCollection collection)
{
    try
    {
        // TODO: Add update logic here

        return Json(true);
    }
    catch
    {
        return Json(false);
    }
}
5
votes

IMHO you should use JsonResult instead of ActionResult (for code maintainability).

To handle the response in Jquery side:

$.getJSON(
 '/MyDear/Action',
 { 
   MyFormParam: $('MyParamSelector').val(),
   AnotherFormParam: $('AnotherParamSelector').val(),
 },
 function(data) {
   if (data) {
     // Do this please...
   }
 });

Hope it helps : )

2
votes

How about this:

[HttpPost]
public bool SetSchedule(FormCollection collection)
{
    try
    {
        // TODO: Add update logic here

        return true;
    }
    catch
    {
        return false;
    }
}