标签: partial-views

如何为Rails的部分渲染查找添加视图路径?

我想要以下目录结构:

views/
  app1/
    users/_user.html.erb
    users/index.html.erb

  app2/
    users/index.html.erb

  shared/
    users/_user.html.erb
    users/index.html.erb
Run Code Online (Sandbox Code Playgroud)

在我看来,我打电话

# app1/users/index.html
<%= render :partial => "user" %>
# => /app1/users/_user.html.erb


# app2/users/index.html
<%= render :partial => "user" %>
# => /shared/users/_user.html.erb
Run Code Online (Sandbox Code Playgroud)

所以基本上,如何告诉Rails检查/ app2/users dir然后检查共享目录,然后才会引发它丢失的模板错误?

更新


我绕过了这个(正如Senthil建议的那样,使用 File.exist?

这是我的解决方案 - 欢迎提出反馈和建议

# application_helper.rb

# Checks for a partial in views/[vertical] before checking in views/shared
def partial_or_default(path_name, options={}, &block)
  path_components         = path_name.split("/")
  file_name               = path_components.pop
  vertical_file_path      = File.join(vertical}, path_components, file_name)
  shared_file_path        = File.join("shared", path_components, file_name)
  full_vertical_file_path = File.join("#{Rails.root}/app/views/", "_#{vertical_file_path}.html.erb")
  attempt_file_path …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails partial-views actionview actionviewhelper ruby-on-rails-3

20
推荐指数
1
解决办法
2万
查看次数

在MVC 3中禁用部分视图上的缓存

我有一个部分View被缓存的问题,当它不应该被缓存.此部分视图用于显示页面上的登录/注销.它使用下面的简单代码来确定要显示的链接

@if(Request.IsAuthenticated) {    
    <a href="@Url.Action("LogOff", "Account", new { area = "" })">Log Off</a> 
}
else {
    <a href="@Url.Action("LogOn", "Account", new { area = "" })">Log On</a>
}
Run Code Online (Sandbox Code Playgroud)

使用我的MVC3应用程序中的所有页面调用此部分视图

@Html.Partial("_HeaderView")  
Run Code Online (Sandbox Code Playgroud)

在我的大多数控制器中,我定义了输出缓存,因此我可以利用缓存内容.

[OutputCache(Duration = 86400, VaryByParam = "*")]
Run Code Online (Sandbox Code Playgroud)

现在我的问题是,当我不想要部分视图时,整个页面都被缓存了.这导致了错误的行为,即使用户没有登录,它有时会显示LogOff等.有没有办法缓存所有内容,除了有问题的部分视图?

c# caching outputcache partial-views asp.net-mvc-3

20
推荐指数
2
解决办法
3万
查看次数

将匿名对象从视图传递到局部视图

我从各种其他相关问题,了解这里,并在这里等等,因为匿名类型与内部访问定义你不能从控制器通过匿名类型对象的视图.View和Controller代码被编译到不同的程序集中,因此尝试使用它会导致此错误...

对象不包含'foo'的定义

这很好,我可以接受,虽然起初很烦人.有足够的建议解决方法来安抚我.

但是,我认为你仍然可以将匿名类型从视图传递到局部视图,因为它们都是视图,它们将在同一个程序集中编译.

Razor查看代码......

@Html.Partial("Partial1", new { foo = "Something", bar = "Something else" })
Run Code Online (Sandbox Code Playgroud)

和"Partial1"的局部视图代码

@model dynamic 

<h1>@Model.foo</h1>
<span>@Model.bar</span>
Run Code Online (Sandbox Code Playgroud)

奇怪的是,这个WAS在一个新的MVC项目的开发开始工作,但是当我添加了更多的视图时它就停止了工作,现在我给出了与上面提到的相同的错误.

就好像我已达到一个阈值,在该阈值中视图和局部视图不再编译到同一个程序集中.但我只是在猜测.

我想知道是否有人可以解释这一点.

asp.net-mvc partial-views anonymous-types razor

18
推荐指数
2
解决办法
1万
查看次数

ASP.NET MVC强类型部分视图,给出无法加载类型错误

我正在尝试使用Html.RenderPartial()呈现带有"MVC View User Control"的强类型视图.我的ascx文件的顶部如下所示:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<System.Collections.IEnumerable<string>>" %>
Run Code Online (Sandbox Code Playgroud)

目前,此页面上没有其他内容.

当我执行应用程序并加载呈现此控件的页面时,我收到以下错误:

 Could not load type 'System.Web.Mvc.ViewUserControl<System.Collections.IEnumerable<string>>'.
Run Code Online (Sandbox Code Playgroud)

那么,我简化了它:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<String>" %>
Run Code Online (Sandbox Code Playgroud)

然后,以防万一需要完全合格:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<System.String>" %>
Run Code Online (Sandbox Code Playgroud)

每次我得到相同的错误(替换类型).我在这做错了什么?我在.NET 3.5上使用ASP.NET MVC 1.0 RTM.

asp.net-mvc partial-views .net-3.5 strongly-typed-view

17
推荐指数
1
解决办法
6548
查看次数

使用Razor在Visual Studio 2012 Express中创建部分视图时出错

我在Microsoft Visual Studio 2012 Express中创建一个视图,我希望它是一个强类型的局部视图,但我收到以下错误:

C:\ Program Files(x86)\ Microsoft Visual Studio 11.0\Common7\IDE\VWDExpress\Item Templates\CSharp\Web\MVC 4\CodeTemplates\AddView\CSHTML\Empty.tt(-1,1):错误:有获取AppDomain以从主机运行转换时出现问题.这个过程无法继续.

我创建的视图不是部分视图,强类型或非强制类型,我没有遇到任何问题.

partial-views strongly-typed-view visual-studio asp.net-mvc-4

17
推荐指数
1
解决办法
1万
查看次数

从局部视图访问父模型

我问,因为我将创建的部分视图是空白的,目的是创建一个新的子实体.我只需要一个快速的,无论是否脏的方式从局部视图中访问父模型.我需要父母的身份证明.

部分视图是否可以自动访问父模型?

asp.net-mvc partial-views razor asp.net-mvc-3

17
推荐指数
1
解决办法
2万
查看次数

从局部视图添加对html head标记的脚本引用

如何注入脚本标记,如

<script src="somejsfile"></script>
Run Code Online (Sandbox Code Playgroud)

要么

<script type="text/javascript>some javascript</script>
Run Code Online (Sandbox Code Playgroud)

从局部视图进入页面的head标签?


更新:旧问题的答案这是关于ASP.NET MVC.我们可以使用RenderSection.这里使用Razor视图引擎的MVC 3示例:

布局视图或母版页:

<html>
  <head>
  <script ...></script>
  <link .../>
  @RenderSection("head")
  </head>
  <body>
  ...
  @RenderBody()
  ...
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

查看,例如主页:

@section head{
  <!-- Here is what you can inject the header -->
  <script ...></script>
  @MyClass.GenerateMoreScript()
}
<!-- Here is your home html where the @RenderBody() located in the layout. -->
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc partial-views

16
推荐指数
1
解决办法
5878
查看次数

Html.RenderPartial和Ajax.BeginForm - >提交被调用两次

我有以下索引视图:

@model BoringStore.ViewModels.ProductIndexViewModel
@{
    ViewBag.Title = "Index";
}

<h2>Produkte</h2>

<div id='addProduct'>
    @{ Html.RenderPartial("Create", new BoringStore.Models.Product()); }
</div>

<div id='productList'>
    @{ Html.RenderPartial("ProductListControl", Model.Products); }
</div>
Run Code Online (Sandbox Code Playgroud)

"productList"只是所有产品的列表.

addProduct呈现我的创建视图:

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
<div id="dialog-confirm" title="Produkt hinzufügen" style="display:none">
@using (Ajax.BeginForm("Index_AddItem", new AjaxOptions { UpdateTargetId = "productList" }))
{ 
    @Html.Raw(DateTime.Now.ToString());

    <div>
        @Html.LabelFor(model => model.Name)
        @Html.EditorFor(model => model.Name)
    </div>
    <br />
    <div>
        @Html.LabelFor(model => model.Price)
        @Html.EditorFor(model => model.Price)
    </div>
    <br /><br />
    <div>
        <input type="submit" value="Produkt hinzufügen" />
    </div>
}
Run Code Online (Sandbox Code Playgroud)

提交表单时,将调用控制器中的Index_AddItem方法.不幸的是,表单总是调用该方法两次.:(

有人可以帮我吗?

asp.net-ajax partial-views razor asp.net-mvc-3 double-submit-problem

15
推荐指数
1
解决办法
1万
查看次数

将PartialView转换为HTML

我只是想知道是否有可能转换

PartialView("_Product", model)
Run Code Online (Sandbox Code Playgroud)

HTML,所以我们可以用JSON发送回去?

return Json(result, JsonRequestBehavior.AllowGet);
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net-mvc json partial-views

15
推荐指数
2
解决办法
2万
查看次数

在局部视图中获取viewdatadictionary值

我有一个局部视图,我试图从父视图中获取值.这就是我想要的:

 @Html.Partial("Shared", "Home", new ViewDataDictionary { { "9595959", "8sd8sds8das8d" } }) 
Run Code Online (Sandbox Code Playgroud)

这是部分观点:

      <!-- Google Code for apply Conversion Page --> <script type="text/javascript">
   /* <![CDATA[ */
   var google_conversion_id = "viewdata-number1";
   var google_conversion_language = "en";
   var google_conversion_format = "2";
   var google_conversion_color = "ffffff";
   var google_conversion_label = "viewdata-number2"; var google_conversion_value = 0;
   /* ]]> */
   </script>
   <script type="text/javascript"  
   src="https://www.googleadservices.com/pagead/conversion.js">
   </script>
   <noscript>
   <div style="display:inline;">
   <img height="1" width="1" style="border-style:none;" alt=""  
   src="https://www.googleadservices.com/pagead/conversion/viewdata-number1/?value=0&amp;label=viewdata-number2&amp;guid=ON&amp;script=0"/>
   </div>
   </noscript> 
Run Code Online (Sandbox Code Playgroud)

是否有可能立即获得价值?我没有为部分视图分配任何模型或控制器.先谢谢,Laziale

更新的代码:

@{
    var variable = ViewData["First"];
        <!-- Google Code for apply …
Run Code Online (Sandbox Code Playgroud)

partial-views razor asp.net-mvc-3 asp.net-mvc-4

13
推荐指数
1
解决办法
2万
查看次数