今天做一个表单的提交,提交后需要跳转到另一个controller的action,能跳转到action,但就是返回不到页面。
下面是表单提交的两个action。问题出在第二个(第一个action是能正常运行的)
public class Input_IntentionCreateController : Controller
{
IEFCrud crud = new EFCrud();
[HttpPost]
public ActionResult Submit_Input_AuditByManager(Input_Audit
input, long taskId, string EmployeeNumber)
{
SaveEN_Follow(input, taskId);
BP_IntentionCreate wf = new BP_IntentionCreate();
WF_Ex.Host.IWFHost host = new WF_Ex.Host.WFHost();
host.SubmitTask(wf, taskId, input);
return RedirectToAction("Index", "InTask");
}
[HttpPost]
public ActionResult Submit_Input_Approval(Input_Verify input)
{
return RedirectToAction("Index", "InTask");
}
}
跳转之后的action如下:
public ActionResult Index()
{
return View();
}
我通过鼠标右键选择进入view,是能进入的,而且其它的都正常的。就上面第二个action跳转到这里之后就会显示找不到相应的页面,
求mvc原理大神指导,拜谢!
急急急!!!
你换成return RedirectToAction("Index");吧,因为你是在同一个控制器之间跳转Action,那么默认情况下,还是这个控制器,所以不需要指定controller名称,其实你要是制定了也没有关系,但是你要看啊,你指定的是InTask控制器,那么你的项目中就应该存在这么一个叫InTask的控制器,并且这个控制器中存在一个Index的Action,如果没有的话,是会报错的~
RedirectToAction重定向方法里面的参数含义,第一个指的是Action名称,第二个若存在则是要重定向到的控制器名称,希望可以帮到你。
不是在同一个controller里。而且,InTask控制器是存在的,Index的Action也是存在的。文中我也说道了。第一个action都能正常跳转的。呵呵
@天天笑笑: 能将报错的截图发过来看下么?报错信息中应该会显示它对于你的重定向,都在哪些路径中进行了查找,查询不到就会报错的,你的第一个能执行,第二个不可以,一下子是看不到原因呢,看下怎么报错的吧
@车上有首长:
{System.InvalidOperationException: 未找到视图“Index”或其母版视图,或没有视图引擎支持搜索的位置。搜索了以下位置:
~/Views/InTask/Index.aspx
~/Views/InTask/Index.ascx
~/Views/Shared/Index.aspx
~/Views/Shared/Index.ascx
~/Views/InTask/Index.cshtml
~/Views/InTask/Index.vbhtml
~/Views/Shared/Index.cshtml
~/Views/Shared/Index.vbhtml
在 System.Web.Mvc.ViewResult.FindView(ControllerContext context)
在 System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context)
在 System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass1a.<InvokeActionResultWithFilters>b__17()
在 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation)
在 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult)
在 System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.<BeginInvokeAction>b__22(IAsyncResult asyncResult)
在 System.Web.Mvc.Controller.<>c__DisplayClass1d.<BeginExecuteCore>b__18(IAsyncResult asyncResult)
在 System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar)
在 System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult)
在 System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar)
在 System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult)
在 System.Web.Mvc.MvcHandler.<>c__DisplayClass8.<BeginProcessRequest>b__3(IAsyncResult asyncResult)
在 System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar)
在 System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)
在 System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
在 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)}
项目下的Index视图也是存在的。
@天天笑笑: 好悲伤...看起来似乎是没什么问题的,要不你试试return Redirect("/InTask/Index");我只能帮你到这里了,不管是否可以请告诉我~~~,也希望你能够找出原因,并且分享下