2010-03-03 11 views
35

Ho inviato un modulo tramite jquery, ma ho bisogno del ActionResult per restituire true o false.return bool da asp.net mvc actionresult

questo è il codice che per il metodo di controllo:

[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 
     } 
    } 

Come faccio a progettare la mia chiamata JQuery passare di dati del modulo e verificare anche se il valore di ritorno è vera o falsa. Come posso modificare il codice sopra per restituire vero o falso?

+7

Amo il semplice, si riduceva ad esempio, che expunges tutto codice irrilevante. Desideri che il 95% delle altre persone, inclusi gli scrittori di libri, faccia lo stesso. –

+0

@Eclipsoft Forse qualcuno con influenza può discutere l'idea su meta se non è stata coperta. – MrBoJangles

risposta

64

È possibile restituire un risultato JSON sotto forma di bool o con una proprietà bool. Qualcosa di simile a questo:

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

     return Json(true); 
    } 
    catch 
    { 
     return Json(false); 
    } 
} 
+3

+1, * file che nella sua memoria per uso futuro * –

+2

+1, sei un eroe – Eddie

4

IMHO si dovrebbe usare JsonResult invece di ActionResult (per il codice manutenibilità).

per gestire la risposta in parte Jquery:

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

Speranza che aiuta:)

+1

In che modo l'utilizzo di un risultato JSON al posto di ActionResult rende il codice più gestibile? AFAIK il tipo di risultato che utilizzerai influenzerà solo il tipo di output che il browser si aspetta. – JoseMarmolejos

+1

@JoseMarmolejos Ciao Jose, ti consiglio di restituire il tipo più derivato che puoi nei tuoi metodi, perché ti permette di usare i metodi derivati ​​e le proprietà del tipo restituito senza un cast down down quando richiesto. lo stesso vale per gli eventi. Dall'altro lato a causa della regola di covarianza, entrambe le opzioni sono le stesse per l'utilizzo dei delegati;) +1 – SDReyes

2

ne dite di questo:

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

     return true; 
    } 
    catch 
    { 
     return false; 
    } 
} 
+2

Restituisce la stringa "True", quindi fallisce un controllo booleano, ad es. if (data === true), a differenza dell'approccio JSON. – StuartQ

Problemi correlati