代码之家  ›  专栏  ›  技术社区  ›  Nate CSS Guy

在我希望javascript重定向或更新一个DIV的MVC操作中,我应该返回哪种类型的actionResult?

  •  0
  • Nate CSS Guy  · 技术社区  · 15 年前

    首先让我从用户的角度概述我的目标,然后让我的代码实现这个目标。

    我希望用户能够点击一个按钮,它会弹出一个jquery模式样式对话框,上面有一些字段,还有一个submit+cancel按钮。当他们成功提交记录时,我希望将用户重定向到/records/customlist/--但是如果有错误,我希望更新模式为的DIV的内容,以显示我添加和返回的模型状态错误。

    我的问题是,因为我想告诉我的客户端javascript它应该根据操作的结果做什么,我应该从我的actionResult方法返回什么类型?我在想一个JSON对象,它有两个字段,类型和数据,所以我可以这样编写JS

    if(ret.Type == 1) {
        window.location(ret.Data);
    }
    else {
        ('#modalDiv').html(ret.Data);
    }
    

    这是个好方法吗?我应该先退房吗?

    1 回复  |  直到 12 年前
        1
  •  1
  •   Oscar Kilhed    15 年前

    听起来不错。但是,如果您返回一个看起来更像这样的JSON对象,代码的可读性可能会提高一点:

    {
        type : 1,
        href : 'uri-to-redirect-to',
        errormessages : ['error1','error2']
    }
    

    你的javascript可以像这样

    if(ret.type === 1){
        window.location(ret.href);
    }else{
        //add error messages to modalDiv
    }
    

    另外,不要使用==运算符。 if(ret.type == true) 评估结果与 if(ret.type == 1) . 在这种情况下,这可能无关紧要,但为了将来参考,请远离==运算符,除非您绝对肯定希望使用这种功能。