从另一个控制器调用一个控制器的视图

Posted

技术标签:

【中文标题】从另一个控制器调用一个控制器的视图【英文标题】:calling view of one controller from another controller 【发布时间】:2017-10-12 08:41:09 【问题描述】:

我正在使用 ASP 和 MVC5。我正在尝试。我正在尝试使用以下link 中提到的方法

return View("../ReasonTree/Add");

但它会引发systemnull reference 异常。

我也试过这个方法:

return RedirectToAction("Add","ReasonTree");

它又抛出了一个System.ArgumentException

我必须处理已经编写的代码并对该代码进行更改。

【问题讨论】:

你试过这样吗`return RedirectToAction("name_of_view");` 是的,但它在同一个控制器中显示视图。以前的程序员给视图起了相同的名字,但控制器不同 能否提供完整的示例代码?当Add 是动作名称且ReasonTree 属于控制器名称时,return RedirectToAction("Add","ReasonTree"); 似乎有效。 return View("Add") 够了吗? 我可能无法提供完整的代码可以粘贴一点代码sn-p。 您确定控制器和方法名称的拼写正确吗?你确定你的控制器方法是用正确的控制器类编写的吗? return RedirectToAction("ActionOrViewName", "ControllerName");对我来说很好。 【参考方案1】:

如果它抛出系统空引用异常,那么控制器名称或方法名称可能不准确。或者您在错误的控制器类中编写了控制器方法。

return RedirectToAction("ActionOrViewName", "ControllerName");

对我来说很好。

【讨论】:

是的,控制器名称和方法名称是正确的。之前编写的代码运行正常我没有对原始代码进行更改我只是尝试调用方法和视图。前面代码中还有一件事是控制器代码中存在方法重载。所以相同的方法名称具有不同的参数。 您是否尝试在您的网络浏览器中清除缓存?虽然方法重载,但不应该有任何流程,应该可以正常工作。【参考方案2】:

如果你返回一个严格绑定到任何模型的视图,它会给出空引用异常。这发生在您的第一个返回示例 return View("../ReasonTree/Add"); 中。在您的第二个示例return RedirectToAction("Add","ReasonTree"); 中,我认为 Add 方法需要参数,而您没有提供任何参数。这就是它给出 ArgumentException 的原因。使用您的 redirectToAction 提供参数,例如 return RedirectToAction("Action","controller", new @id=id); 。希望一切顺利。

【讨论】:

感谢您的回复,正如您在第一种情况下的回复中提到的,如果它严格绑定到模型,在这种情况下我应该怎么做。另一件事是视图绑定了一些模型,该模型确实包含我需要为该方法传递的参数,我尝试以相同的方式提及但给出错误。如何访问其他模型,以便我可以将参数传递给方法,所以我被困在这里 你的问题我不清楚。让我看看你的 Action 方法和视图。

以上是关于从另一个控制器调用一个控制器的视图的主要内容,如果未能解决你的问题,请参考以下文章

从另一个控制器调用一个控制器的视图

使用标签栏从另一个视图返回时如何重新加载视图控制器

快速从另一个访问 Viewcontroller 的实例

如何快速从另一个控制器调用函数

如果从另一个类调用 removeFromSuperview 将不起作用

如何从模态视图控制器调用呈现视图控制器的方法