Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何重定向到action mvc_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

C# 如何重定向到action mvc

C# 如何重定向到action mvc,c#,asp.net,asp.net-mvc,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,我正在创建一个ASP.NET MVC应用程序,我希望在出现错误时调用另一个加载不同视图的操作 public ActionResult Invoices() { invoiceClass invoice = getInvoice(); //do stuff with invoice } public invoiceClass getInvoice() { invoiceClass invoice = new invoiceClass(); try {

我正在创建一个ASP.NET MVC应用程序,我希望在出现错误时调用另一个加载不同视图的操作

public ActionResult Invoices()
{
    invoiceClass invoice = getInvoice();
    //do stuff with invoice
}

public invoiceClass getInvoice()
{
    invoiceClass invoice = new invoiceClass();
    try
    {
        // Do stuff
    }
    catch(exception e)
    {
        return RedirectToAction("Index");
    }
    return invoice;
}

我有一个与此非常类似的方法,当我单步执行代码时,异常被捕获,它点击重定向调用,然后转到返回并继续,而不重定向。我错过了一些明显的东西吗?

你错过了一个回报

return RedirectToAction("Index");

不要忘了将返回类型更改为
ActionResult

如果这是一个HTTP入口点,则应该返回
ActionResult

public ActionResult stuff()
{
    try
    {
        // Do stuff
    }
    catch (Exception e)
    {
        //Return a RedirectResult
        return RedirectToAction("Index");
    }

    //Return a JsonResult
    //Example: return the JSON data { "number": 1 }
    return Json(new { number = 1 });
}
编辑 鉴于您刚才所做的编辑,我将如何回答您的问题

public ActionResult Invoices()
{
    try
    {
        invoiceClass invoice = getInvoice();
        //do stuff with invoice
        return Json(...);
    }
    catch
    {
        //Catch the exception at the top level
        return RedirectToAction("Index");
    }
}

public invoiceClass getInvoice()
{
    invoiceClass invoice = new invoiceClass();
    // Do stuff; possibly throw exception if something goes wrong
    return invoice;
}

所以我设法找到了解决这个问题的办法,但是我相信会有更好更有效的办法

public ActionResult Invoices()
{
    try{
        invoiceClass invoice = getInvoice();
        //do stuff with invoice
    }catch (exception e){
        return RedirectToAction("Index");
    }
}

public invoiceClass getInvoice()
{
    invoiceClass invoice = new invoiceClass();
    try
    {
        // Do stuff
    }
    catch(exception e)
    {
        index(); //<--the action result
    }
    return invoice;
}
public ActionResult发票()
{
试一试{
invoiceClass发票=getInvoice();
//处理发票
}捕获(例外e){
返回操作(“索引”);
}
}
公共发票类getInvoice()
{
发票类别发票=新发票类别();
尝试
{
//做事
}
捕获(例外e)
{

索引();//虽然我不确定这是否是正确的位置,但我有一个疑问,那就是..我们是否需要使用
JsonRequestBehavior.AllowGet
仅当它返回
JsonResult
而不是
ActionResult
?@aritra是的,如果这是一个HTTP GET。嗨,对不起,我在尝试实现时对我的示例很懒你的回答我有错误,因为调用这些方法的ActionMethod需要被赋予正确的类型。如果未成功,我似乎无法实现重定向,如果失败,则返回对象successfull@BrianPeach我更新了答案,以反映您问题中的变化。@TimothyShields谢谢您的帮助,成功了:)