2010-03-03 83 views
35

我通过jquery提交了一个表单,但我需要ActionResult返回true或false。从asp.net返回布尔值mvc actionresult

这是为控制方法的代码:

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

我将如何设计我的JQuery调用传递表单数据,并检查返回值是true或false。如何编辑上面的代码以返回true或false?

+7

我喜欢简单的,归结例如,这expunges所有无关的代码。希望95%的其他人,包括图书作者,也会这样做。 – 2012-09-18 05:23:54

+0

@Eclipsoft如果没有被覆盖的话,或许有人有权力讨论关于meta的想法。 – MrBoJangles 2013-01-31 23:18:14

回答

64

您可以以bool或bool属性的形式返回json结果。事情是这样的:

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

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

+1,*在他的记忆中供将来使用的文件* – 2010-03-03 21:22:43

+2

+1,你是英雄 – Eddie 2012-01-25 14:55:58

4

恕我直言,你应该使用JsonResult而不是ActionResult(代码可维护性)。

要处理jQuery中端响应:)

+1

如何使用Json结果而不是ActionResult使代码更易于维护? AFAIK您使用的结果类型只会影响浏览器预期的输出类型。 – JoseMarmolejos 2010-03-25 10:55:38

+1

@JoseMarmolejos嗨,Jose,我建议你在你的方法中返回你可以得到的派生类型,因为它可以让你在需要的时候使用返回类型的派生方法和属性,而不需要检查下来。同样适用于事件。 另一方面,由于协方差原则,这两个选项对于代表使用是相同的; )+1 – SDReyes 2010-03-25 15:08:41

2

这个怎么样:

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

希望它可以帮助

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

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

这将返回字符串“True”,因此布尔检查失败,例如,如果(数据===真),不像JSON方法。 – StuartQ 2016-12-22 12:30:41