【问题标题】:Changing some of static content of shared partial view depending on main view根据主视图更改共享局部视图的一些静态内容
【发布时间】:2014-04-12 11:59:50
【问题描述】:

我的应用程序中有几个共享的 razor 部分视图,用于在不同页面上显示产品的一些详细信息。现在我需要根据呈现部分视图的主视图来更改部分视图内的一些链接。

例如:

如果部分视图在“index.cshtml”中呈现,则部分视图中的链接之一应该是:

<a href="www.site1.com">site1 called from index.cshtml</a>

如果它在“insert.cshtml”中,那么链接需要是

<a href="www.someothersite2.com">other site that's not 1 and it's called from insert.cshtml</a>

类似:

@if (something.parentview = "index.cshtml")
{  <a href="www.site1.com">site1 called from index.cshtml</a>}
else {

    <a href="www.someothersite2.com">other site that's not 1 and it's called from insert.cshtml</a>
}

有没有办法做到这一点?

【问题讨论】:

  • 您可以使用ViewBag。在每个控制器中设置值并在局部视图中使用它们。
  • 这是一个不好的例子,我现在改变了它......我的问题与控制器没有任何关系,我只需要在一两行中显示不同的数据,具体取决于共享部分呈现的位置...

标签: asp.net-mvc razor partial-views


【解决方案1】:

当您调用 Shared PartialView 时,您就知道自己在哪里。 在渲染时将参数传递给您的局部参数要容易得多,这依赖于“检测”在哪个视图内部被渲染。想象一下......你有 3 层嵌套......事情变得更加复杂。想象一下,如果您更改路由或视图名称?

您可以使用 ViewBag 来传递参数:在您的视图中,您可以设置一些内容以检查 Partial。不需要控制器代码。

更强大的方法是将 ViewModel 传递给您的 Partial,但如果您需要传递的唯一数据只是一个参数,则 ViewBag 更简单。

【讨论】:

    猜你喜欢
    • 2014-05-29
    • 1970-01-01
    • 2015-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    • 2023-03-20
    相关资源
    最近更新 更多