C# 如何重定向到action mvc
我正在创建一个ASP.NET 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 {
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谢谢您的帮助,成功了:)