【问题标题】:MVC - Can I display Title and Massage on 1 View by 2 different Controllers?MVC - 我可以通过 2 个不同的控制器在 1 个视图上显示标题和按摩吗?
【发布时间】:2014-03-02 04:52:21
【问题描述】:

我是 MVC 的新手,也是 Stackoverflow 的新手。我没有使用任何数据库,但我只想通过 2 个不同的控制器在 1 个视图上显示标题和按摩。我希望在我的 Index.cshtml 文件中显示来自 HomeController.cs 文件的 @ViewBag.Title 和来自 OtherController.cs 文件的 @ViewBag.Massage 显示。我该如何做到这一点以及如何将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>

【问题讨论】:

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


    【解决方案1】:

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

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

    局部视图

     <p>@ViewBag.Massage</p>
    

    在主视图中你可以调用它。

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

    【讨论】:

    • akhlesh - 但是@ViewBag.Massage 主视图在哪里?
    • 对不起,我明白了,谢谢! :)
    • @MaryMelody 如果此答案解决了您的问题,请将其标记为答案。欢迎使用 StackOverflow!
    【解决方案2】:

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

    【讨论】:

    • 我应该使用局部视图还是什么?
    • 局部视图通常用于您想反复使用的东西。例如。登录或搜索栏。我会这样做的方式是创建 2 个视图,并且它们都具有相同的内容。这是最佳做法,因为当网站变大时,“页面”将变得复杂且难以理解。
    • “换句话说,最好的方法不是你尝试的方法。”嘿!你不应该建议我最好的方法而不是这样说。
    • 谢谢!我感谢您的帮助。 :)
    • Highace2 - 你的回答很有帮助,即使我不能因为我的声誉点或其他原因投票赞成你的回答。 :)
    猜你喜欢
    • 1970-01-01
    • 2011-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-11
    • 1970-01-01
    • 1970-01-01
    • 2013-05-05
    相关资源
    最近更新 更多