加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – ASP.NET MVC – 处理没有返回对象的ajax操作的正

发布时间:2020-12-16 04:16:02 所属栏目:asp.Net 来源:网络整理
导读:我有一个控制器操作,它在数据库中执行一些操作,然后在完成后退出.这个动作是通过jQuery的ajax函数调用的,dataType设置为’json’. 如果我将操作的返回类型设置为void,一切都会正常运行,除非Firefox在控制台中显示错误:“找不到元素”. 如果期望XML回来,Fire
我有一个控制器操作,它在数据库中执行一些操作,然后在完成后退出.这个动作是通过jQuery的ajax函数调用的,dataType设置为’json’.

如果我将操作的返回类型设置为void,一切都会正常运行,除非Firefox在控制台中显示错误:“找不到元素”.

如果期望XML回来,Firefox会抛出这个错误是有道理的.但是,即使我将ajax调用的dataType属性更改为“text”,我仍然会收到错误.为了摆脱返回类型为void的错误,我必须将Response的ContentType设置为“text / html”.或者我可以将返回类型设置为JsonResult并返回一个新的[empty] JsonResult对象.

我确信有几种方法可以让这个错误消失,但我想知道处理动作的正确方法,没有通过ajax调用返回值.

如果重要,我也使用异步控制器动作模式.

public void DoSomethingAsync(SomeJsonObjectForModelBinding model)
{
    // do some database things
}

public void DoSomethingCompleted()
{
    // nothing to do...
    // what should my return type be?
    // do I need to set the content type here?
}

解决方法

我知道这并不能完全回答你的问题,但我认为你应该总是从AJAX或Web服务调用返回一个返回值.即使只告诉您操作成功,否则将错误(消息)返回给您.

我经常定义这样一个类:

public class JsonResultData
{
    private bool _success = true;
    public bool Success
    {
        get { return _success; }
        set { _success = value; }
    }

    public object Value { get; set; }
    public List<string> Errors { get; set; }


    public JsonResultData()
    {
        this.Errors = new List<string>();
    }
}

然后使用它在JsonResultData包装器中返回数据或任何其他调用元数据,如下所示:

return new JsonResult {
            Data = new JsonResultData { Value = returnValue,Success = true }
           };

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读