Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.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# MVC-发送表单后找不到视图_C#_Asp.net Mvc_Razor - Fatal编程技术网

C# MVC-发送表单后找不到视图

C# MVC-发送表单后找不到视图,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,在我的(mvc)应用程序中有以下结构 -视图 --主页 ---Index.cshtml --用户 ---Change.cshtml 我用的是这样的表格 @using (Html.BeginForm("Change", "User", new { id = 2 })) { // Code ... } [HttpPost] public ActionResult Change(FormCollection collection) { //logic.... return View

在我的(mvc)应用程序中有以下结构

-视图
--主页
---Index.cshtml

--用户
---Change.cshtml

我用的是这样的表格

@using (Html.BeginForm("Change", "User", new { id = 2 }))
{
     // Code ...
}
[HttpPost]
public ActionResult Change(FormCollection collection)
{
  //logic....
  return View("Index", "Home");
}
如果所有文本字段都已填写,您可以单击提交按钮。在后台,将执行操作,并将用户带回Home/Index.cshtml页面

我返回“视图”的代码如下所示

@using (Html.BeginForm("Change", "User", new { id = 2 }))
{
     // Code ...
}
[HttpPost]
public ActionResult Change(FormCollection collection)
{
  //logic....
  return View("Index", "Home");
}

问题从这里开始。我无法切换回主页/索引。我得到一个错误,它说,无法找到视图。它尝试在视图/用户中查找索引,但不在主视图中。有什么原因吗?

您在用户控制器中,因此当您执行以下操作时:

return View("Index", "Home");
MVC将在
用户
文件夹中查找
索引
页面。指定
Home
并不是告诉它查看
Home
控制器。该参数是为模型保留的

我不建议从一个控制器路由到另一个控制器,但是您可以使用

RedirectToAction
,允许您在您的情况下指定操作名称和控制器:

return RedirectToAction("Change", "Home");

我懂了。谢谢你的提示。我还没想过“重定向到动作”。尽管如此,我还是感兴趣的是,在您看来,为什么应该避免控制器之间的路由?我可以将我的应用程序组织、拆分为几个部分,并可以更好地维护它(imo)。