【问题标题】:asp mvc Ajax.BeginForm return View or value, confused on return typesasp mvc Ajax.BeginForm 返回视图或值,对返回类型感到困惑
【发布时间】:2010-10-19 06:14:10
【问题描述】:

如果用户没有使用 javascript,我将在 IsAjaxRequest 检查后使用 RedirectToAction 刷新视图。当我在页面中有用户控制并返回部分视图时,此方法有效。

但是当我只想返回一个值时,比如 int,并且在不是 ajax 请求时还想使用 RedirectToAction,我如何在控制器中设置方法?

公共 ActionResult...

(if ajax request) Return View (new{value=5})? 
(if not) redirecttoAction ("view");

不工作。

【问题讨论】:

    标签: asp.net-mvc asp.net-ajax


    【解决方案1】:

    您需要重定向到使用适当的路由数据(并且可能使用 TempData)呈现父视图的操作,以将更新的信息获取到局部视图。

         if (IsAjaxRequest())
         {
             return Content( "5" );
         }
         else
         {
             return RedirectToAction( "parentAction", new { id = ??, value = 5 } );
         }
    

    【讨论】:

    • 是的,但问题在于第一部分,返回视图并为相关字段提供 int 值不起作用。
    • 对不起——错过了你的意思。如果您只想返回一个 int,请将其作为 ContentResult 传回。
    【解决方案2】:

    您需要使用 JsonResult。

    if (IsAjaxRequest()) {
        return Json(new { value = 5 });
    } else {
        return RedirectToAction("parentAction");
    }
    

    它将匿名对象序列化为 JSON 结果。或者,如果您真的只想返回一个“int”,这不是真正常见的 AJAX,您应该使用 ContentResult

    【讨论】:

    • 常见的AJAX是什么意思?
    • Common AJAX 以 JSON 或 XML 形式返回。但是,如果您只想在响应中返回诸如“5”之类的 int(想想打开记事本并输入“5”然后保存),可以这样做,但它需要在您的 AJAX 响应中进行特殊处理。 JSON 看起来像“{ value: 5 }”
    猜你喜欢
    • 1970-01-01
    • 2021-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-02
    • 2018-11-27
    • 1970-01-01
    相关资源
    最近更新 更多