这是一个场景:假设我有两个控制器的站点负责显示不同类型的内容 - 页面和文章.我需要将Partial View嵌入到我的母版页中,该母版页将列出使用某些条件过滤的页面和文章,并显示在每个页面上.我无法在我的母版页上设置模型(我是对的吗?).如何使用Html.RenderPartial解决此任务?
[编辑]是的,我可能会为列出文章和页面创建单独的部分视图,但仍有一个障碍,我不能也不应该在母版页上设置模型.我需要以某种方式说"这里是页面"作为我的renderpartial的参数,也是文章的参数.renderpartial的整个概念与来自masterpages中的数据库的数据对我来说有点模糊.
我是MVC3.0的新手,必须使用jquery.我想知道有人可以帮助我如何在单击HTML按钮时呈现部分视图页面?
我知道这很简单,按钮可以称为"电子邮件",它将用于名为"emailForm"的partialView.但我需要一些帮助.
我想传递一个包含原点的局部变量来到特定页面,这个变量只包含一个带有值的符号.
当我使用这个代码时它工作得很完美,原始变量可以在partial中访问:
render :partial => "products", :collection => @products, :locals => {:origin => :gallery}
Run Code Online (Sandbox Code Playgroud)
但是,当我使用此代码时,原点未设置且无法在部分中访问:
render @products, :locals => {:origin => :gallery}
Run Code Online (Sandbox Code Playgroud)
这有什么区别?第二行代码是不是像第一行一样呈现部分?
我想对某些标准操作进行部分调用.我正在使用此方法来调用partial:
%li= link_to 'Delete Event', 'javascript:void(0);', :class => 'alert tiny button', :data => {'reveal-id' => :RevealDelete}
= render 'layouts/reveal_delete', :item => event_display(@event.event), :resource => @event
Run Code Online (Sandbox Code Playgroud)
然后在我的部分,
#RevealDelete.reveal-modal
%a.close-reveal-modal ×
%h3= "Delete #{item}"
%p Are you sure you want to delete this?
=link_to "Delete #{item}", resource, :method => :delete, :remote => :true, :confirm => resource, :class => 'button close-reveal-modal'
%a.button.alert.close-reveal-modal Cancel
Run Code Online (Sandbox Code Playgroud)
我怎么能有这样的东西:
link_to 'Delete', '#', :partial => 'layouts/delete', :remote => :true?
Run Code Online (Sandbox Code Playgroud)
所以我只在点击时渲染部分,而不是在页面加载时渲染?
为什么我收到以下错误?
nil不是与ActiveModel兼容的对象.它必须实现:to_partial_path.
我认为错误可能与我正在使用的教程有关,当我使用Rails 4时.
这是型号代码:
class DashboardsController < ApplicationController
def show
@text_shout = TextShout.new
@photo_shout = PhotoShout.new
@shouts = current_user.shouts
end
end
class PhotoShoutsController < ApplicationController
def create
content = build_content
shout = current_user.shouts.build(content: content)
if shout.save
redirect_to dashboard_path
else
flash.alert = "Could not shout."
redirect_to dashboard_path
end
end
private
def build_content
PhotoShout.new(photo_shout_parameters)
end
def photo_shout_parameters
params.require(:photo_shout).permit(:image)
end
end
Run Code Online (Sandbox Code Playgroud)
这是在_shout.html partial上发生错误的视图代码
# app/view/dashboards/show.html.erb
<%= form_for @text_shout do |form| %>
<%= form.text_field :body, placeholder: 'Shout content here' %>
<%= form.submit …Run Code Online (Sandbox Code Playgroud) 我正在渲染部分轨道,我想在渲染部分时交替使用背景颜色.我知道这不是很清楚,所以这里是我想要做的一个例子:
行一灰色背景行两黄色背景行三灰色背景行四黄色背景这是我正在使用的视图代码
<table>
<%= render :partial => 'row' :collection => @rows %>
</table>
Run Code Online (Sandbox Code Playgroud)
_row.html.erb部分看起来像这样
<tr bgcolor="#AAAAAA">
<td><%= row.name %></td>
</tr>
Run Code Online (Sandbox Code Playgroud)
问题是我不知道如何更改每隔一行的背景颜色.有没有办法做到这一点?
我试图在MVC 3中更改我的视图模型时遇到问题.
第一个视图(index.cshtml):
@model IEnumerable<MyProgram.MyFrogCollection>
<h1>Welcome to my frog collection</h1>
@foreach(MyProgram.Frog frog in Model)
{
<div class="frogDetails">
@RenderPage("ShowFrogDetails.cshtml", frog);
</div>
}
Run Code Online (Sandbox Code Playgroud)
第二个视图(ShowFrogDetails.cshtml),我想在整个网站上使用:
@model MyProgram.Frog
<h3>Name:</h3><div class="detail">@Model.Name</div>
<h3>Colour:</h3><div class="detail">@Model.Colour</div>
Run Code Online (Sandbox Code Playgroud)
但是,当我在传入青蛙对象列表后尝试运行页面index.cshtml时,在获取@RenderPage行时出现以下错误:
'/'应用程序中的服务器错误.传递到字典中的模型项的类型为'System.Collections.Generic.List`1 [MyProgram.Frog]',但此字典需要"MyProgram.Frog"类型的模型项.
如果我要从ShowFrogDetails.cshtml中删除代码并将其放在index.cshtml的foreach循环内,那么结果就是我所期望的.但是,这不会重用现有代码.
无论如何我可以将模型更改为单个Frog对象以在RenderPage中使用吗?
干杯!
App_Code文件夹中的简单Razor Helper:
MyHelper.cshtml
@using System.Web.Mvc
@helper SimpleHelper(string inputFor){
<span>@inputFor</span>
Html.RenderPartial("Partial");
}
Run Code Online (Sandbox Code Playgroud)
视图/共享文件夹中的简单视图:
MyView.cshtml
<html>
<head
</head>
<body>
@WFRazorHelper.SimpleHelper("test")
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
视图/共享文件夹中的简单部分视图:
Partial.cshtml
<h1>Me is Partial</h1>
Run Code Online (Sandbox Code Playgroud)
编译器抛出错误:
CS1061:'System.Web.WebPages.Html.HtmlHelper'enthältkeine定义für'RenderPartial',und es konnte keine Erweiterungsmethode'RenderPartial'gefunden werden,die ein erstes Argument vom Typ'System.Web.WebPages.Html.HtmlHelper'akzeptiert (Fehlt eine Using-Direktive oder ein Assemblyverweis?).
但如果我在MyView.cshtml中调用Html.RenderPartial一切正常.
我想我必须更改一些web.configs,因为MyView中的HtmlHelper取自System.Web.Mvc而MyHelper.cshtml中的HtmlHelper取自System.Web.WebPages.
我该如何解决?
当您使用Html.RenderPartial时,将获取您要呈现的视图的名称,并在该位置呈现它的内容.
我想实现类似的东西.我希望它获取您要呈现的视图的名称,以及一些其他变量,并在容器中呈现内容.
例如:
public static class WindowHelper
{
public static string Window(this HtmlHelper helper, string name, string viewName)
{
var sb = new StringBuilder();
sb.Append("<div id='" + name + "_Window' class='window'>");
//Add the contents of the partial view to the string builder.
sb.Append("</div>");
return sb.ToString();
}
}
Run Code Online (Sandbox Code Playgroud)
有人知道怎么做吗?
renderpartial ×10
asp.net-mvc ×3
html-helper ×3
jquery ×2
razor ×2
app-code ×1
asp.net ×1
c# ×1
ienumerable ×1
master-pages ×1
model ×1
partials ×1
polymorphism ×1
ruby ×1