Asp.net 返回从其他控制器生成的视图

Asp.net 返回从其他控制器生成的视图,asp.net,asp.net-mvc,view,Asp.net,Asp.net Mvc,View,比如说,有一个区域是“产品”和两个控制器“家庭”和“套件”(在这个场景中有更多控制器的行为类似于“套件”) 我配置了“ProductAreaRegistration.cs”,使URL如下所示: \产品\ (带controller=“Home”,action=“Index”) \产品\套件 (带controller=“Suite”,action=“Index”) \产品\套件\技术规格 (带controller=“Suite”,action=“technicalsspecification”) “

比如说,有一个区域是“产品”和两个控制器“家庭”和“套件”(在这个场景中有更多控制器的行为类似于“套件”)

我配置了“ProductAreaRegistration.cs”,使URL如下所示:

\产品\
(带controller=“Home”,action=“Index”)

\产品\套件
(带controller=“Suite”,action=“Index”)

\产品\套件\技术规格
(带controller=“Suite”,action=“technicalsspecification”)

“TechnicalSpecification”动作出现在该区域的每个控制器中,但“Home”控制器是其中一个,wo实际上完成了主要工作。其他控制器(如“套件”)只需执行一些与控制器相关的操作,然后重定向到“主页”、“技术规格”:


我的问题是,当我查看“套件”、“技术规格”的链接时,它会显示
\产品\套件\技术规格

但单击该链接后,地址栏中的URL将更改为
\产品\技术规格?规格ID=45

因为重定向。我希望URL保持前面提到的状态。

所以不是“return RedirectToAction(…)”,而是类似于“return ViewResultFromOtherController(…)”,这样它就不会重定向了?

希望你有这个想法。
如果没有,请询问

提前谢谢

可能有比这更好的方法,但您可以尝试在操作中实例化另一个控制器,调用该方法并返回其结果。这将给您留下与您发布到的URL相同的URL,但会给您另一种方法的结果

比如:

Controller home = new HomeController();
return home.TechnicalSpecification(specificationId);

不过,这确实需要重构

看在上帝的份上!!!这不是经典的asp就是asp.net!!!!!无需愤怒-但感谢提醒和编辑标签:)谢谢!:)是的,也许有更好的办法,但这对我来说是个好办法。在那之后,我只需将.cshtml文件移动到“共享”文件夹中,然后一切都正常了。
// Home-Controller
public ActionResult TechnicalSpecification(int specificationId)
    {
        Object model = getModelByIdWithSomeMethod(specificationId);
        //DoEvenMoreThingsHere();

        return View(model);
    }
Controller home = new HomeController();
return home.TechnicalSpecification(specificationId);