MVC - 我可以通过2个不同的控制器在1个视图上显示标题和按摩吗?

时间:2014-03-02 04:52:21

标签: c# asp.net-mvc asp.net-mvc-4 asp.net-mvc-routing

我是MVC的新手,也是Stackoverflow的新手。我不使用任何数据库,但我只想在2个不同的控制器上显示标题和按摩。我想在我的Index.cshtml文件中显示HomeController.cs文件中的@ViewBag.Title和来自@ViewBag.Massage文件的OtherController.cs显示。如何执行此操作以及如何将OtherController.cs引用或附加到Index.cshtml?请不要告诉我,我要求的是如何将样式表附加到html,但MVC无法实现。

如果真的不可能那么请告诉我如何使用_Layout.cshtml文件通过部分视图执行此操作。因为我不想在我的视图文件中写太多。

提前谢谢你!

RouteConfig.cs

routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home",
                                action = "Index",
                                id = UrlParameter.Optional
                              }
               );

HomeController.cs

public ActionResult Index()
        {
            ViewBag.Title = "";
            return View();
        }

OtherController.cs

public ActionResult Index()
        {
            ViewBag.Massage = "";
            return View();
        }

Index.cshtml

<title>@ViewBag.Title</title>

<p>@ViewBag.Massage</p>

2 个答案:

答案 0 :(得分:2)

我不知道你是否可以,但如果你以正确的方式做到这一点,那么你将使用特定内容制作2个不同的视图,然后每个ActionResult引用一个视图。换句话说,做到这一点的最好方法不是你尝试这样做的方式。

答案 1 :(得分:2)

索引操作方法在家庭控制器中是相同的,但在其他控制器中,您应该返回部分视图。

   public ActionResult PartialIndex()
    {
        ViewBag.Massage = "Message from Partial View";
        return PartialView();
    }

部分视图

 <p>@ViewBag.Massage</p>

在主视图中,您可以调用它。

  <h1>@ViewBag.Title.</h1>
  <h2>@{Html.RenderAction("IndexPartial");}</h2>