标签: partial-views

在ASP.NET MVC中使用部分视图

背景

尝试在ASP.NET MVC中呈现局部视图时,我收到以下错误.我是ASP.NET MVC的新手,我确信错误很容易解决,这源于我缺乏完整的理解.

问题(对于那些不想阅读所有内容的人):

导致此错误的原因是什么?

异常详细信息:: System.InvalidOperationException传递到字典中的模型项是类型, 'MyApp.Models.ClassroomFormViewModel' 但此字典需要类型为'System.Collections.Generic.IEnumerable1 的模型项 [MyApp.Models.ClassroomFormViewModel]'.


的entites

我有两个父/子关系的实体.

Classroom                   StickyNote 
------------                -----------
Id          1 -----         Id
Name               \        Name
(...)               \       Content
                     ---- * ClassroomID

模型

ModelStickyNote中,内容保存在不同的表中,并进行访问(使用Linq-to-SQL以下方法:

public IQueryable<StickyNote> GetStickyNotesByClassroom(Classroom classroom)
{
     return from stickynote in db.StickyNotes
            where stickynote.ClassroomID == classroom.ID
            select stickynote;
}
Run Code Online (Sandbox Code Playgroud)

错误

我创建了一个显示StickyNote内容的部分视图,因为它"属于"它所在的教室.我遇到的问题是我无法显示它,并收到以下错误:

传递到字典中的模型项是类型: 'MyApp.Models.ClassroomFormViewModel' 但是这个字典需要类型为'System.Collections.Generic.IEnumerable1 的模型项 [MyApp.Models.ClassroomFormViewModel]'.描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.

异常详细信息:: System.InvalidOperationException传递到字典中的模型项是类型, 'MyApp.Models.ClassroomFormViewModel' 但此字典需要类型为'System.Collections.Generic.IEnumerable1 的模型项 [MyApp.Models.ClassroomFormViewModel]'. …

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

10
推荐指数
1
解决办法
9761
查看次数

ASP.NET MVC 2使用jQuery加载局部视图 - 没有客户端验证

jQuery.load()用来渲染局部视图.这部分看起来像这样:

$('#sizeAddHolder').load(
                '/MyController/MyAction', function () { ... });
Run Code Online (Sandbox Code Playgroud)

我的控制器中的操作代码如下:

    public ActionResult MyAction(byte id)
    {
        var model = new MyModel
        {
            ObjectProp1 = "Some text"
        };

        return View(model);
    }

    [HttpPost]
    public ActionResult MyAction(byte id, FormCollection form)
    {
        // TODO: DB insert logic goes here

        var result = ...;

        return Json(result);
    }
Run Code Online (Sandbox Code Playgroud)

我返回的部分视图看起来像这样:

<% using (Html.BeginForm("MyAction", "MyController")) {%>
    <%= Html.ValidationSummary(true) %>

    <h3>Create my object</h3>

    <fieldset>
        <legend>Fields</legend>

        <div class="editor-label">
            <%= Html.LabelFor(model => model.ObjectProp1) %>
        </div>
        <div class="editor-field">
            <%= Html.TextBoxFor(model => model.Size.ObjectProp1) …
Run Code Online (Sandbox Code Playgroud)

validation asp.net-mvc jquery partial-views asp.net-mvc-2

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

如何使用Ajax.BeginForm更新div并执行javascript函数?

我正在使用类似的东西更新部分视图的div:

<% using (Ajax.BeginForm("Action", "Controller",
               new { id=Model.id },
               new AjaxOptions
               {
                   UpdateTargetId = "divId",
                   InsertionMode = InsertionMode.InsertAfter,
               }))
   {  %>
Run Code Online (Sandbox Code Playgroud)

并且它的工作正常,返回的视图被添加到div,但是我现在需要在帖子成功时执行javascript,所以我想:"简单,只需添加 OnSuccess = "MyJsFunc()"" AjaxOptions,但是在这之后,它停止了工作!现在页面被刷新,只返回部分视图:(,我甚至试过一个简单的Alert("Hi"),它也没有工作..我怎么能让这个工作?

(顺便说一句,我认为这可能是一个重复的/sf/ask/139632811/但是这个问题被废弃了回答)

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

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

json erb模板找不到其他html偏

我正在尝试使用json响应,其中某些值是由部分呈现的html

#projects_Controller.rb

def index
  respond_to do |f|
    f.json 
  end
end

# index.json.erb

  {
     "html":"<%= raw escape_javascript(render :partial => 'projects/disclaimer') %>"
  }
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

  ActionView::Template::Error (Missing partial projects/disclaimer with {:handlers=>[:erb, :rjs, :builder, :rhtml, :rxml], :formats=>
  [:json], :locale=>[:en, :en]} in view paths "c:/rails/app/views", "c:/rails/vendor/plugins/more/app/views", "C:/Ruby192/lib/ruby/gems/1.9.1/gems/devise-1.1.8/app/views")
Run Code Online (Sandbox Code Playgroud)

似乎JSON请求在其名称中使用.json.erb呈现部分但不是.html.erb,这就是我所拥有的.有没有办法让我指定'html'.

ADDED:如果请求是'js',并且在index.js.erb中我渲染了几乎相同的代码:#index.js.erb

  disclaimer = {
     "html":"<%= raw escape_javascript(render :partial => 'projects/disclaimer') %>"
  }
Run Code Online (Sandbox Code Playgroud)

它确实找到了projects/disclaimer.html.erb并正确呈现它.我想知道为什么会出现这样的不一致,如果有人请求js,其模板中的任何部分渲染都会查找partial_name.html.erb但是如果请求json,部分渲染会要求partial_name.json.erb?

谢谢

json ruby-on-rails partial-views

10
推荐指数
2
解决办法
5177
查看次数

ASP.NET MVC:使用Html.Partial还是Html.Action?

我有一个网站,在布局中定义了导航栏.导航栏用于站点的多个视图中,并具有一些动态内容,这些内容是从数据库中的几个查询生成的.

我想知道渲染这个菜单的最佳做法是什么(在局部视图中定义).

据我所知,我可以通过两种方式实现,每种方式都有一些优点和缺点:

使用Html.Action:+它完全独立于使用布局的视图 - 它添加了一个额外的请求来呈现页面的一部分 - 我添加了一个Action方法,它返回一个未从Ajax调用的Partial视图.

使用Html.Partial:+一个简单的请求来渲染整个视图 - 每个视图模型必须包含导航栏所需的信息

我非常感谢您对此的见解,因为我在我的网站上有几个这样的场景,我不确定哪一个是最好的.

谢谢!

asp.net-mvc partial-views razor

10
推荐指数
1
解决办法
2883
查看次数

Rails 3 + Ajax:如何访问我的本地表单构建器实例

我有一个显示一组输入的表单.我也有一个按钮,当点击时,我发出一个ajax请求,它应该用一组不同的输入替换现有的输入.

我所有的ajaxy链接东西都很好.问题是我正在使用a form_for,所以为了显示新的表单输入,我需要表单构建器实例.

查看文件

<%= simple_form_for @order do |f| %>
    <div id="info">
        <%= render 'my_first_form_fields_partial', f: f %>
    </div>
    <%= link_to 'Change inputs', change_inputs_path, remote: true %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

我希望我的js.erb看起来像这样,但f只在视图中的窗体范围内定义.

$('#info').html("<%= escape_javascript(render 'my_second_fields_partial', f: f) %>");
Run Code Online (Sandbox Code Playgroud)

我怎样才能使它能够f以某种方式进入那个部分呢?

ajax ruby-on-rails partial-views ruby-on-rails-3 simple-form

10
推荐指数
1
解决办法
3245
查看次数

RenderSection在ASP.NET MVC3中的部分视图中不起作用

在我的ASP.NET MVC3项目中,我有一个_Layout.cshtml由Visual Studio 2010生成的标准,在关闭我的<body>标记后,我放置了一个RenderSection:

_Layout.cshtml:

</body>
<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
@RenderSection("ScriptContent", required: false)
</html>
Run Code Online (Sandbox Code Playgroud)

然后在我的Index.cshtml视图中我有:

@model MyApp.ViewModels.MyViewModel
@{ Html.RenderPartial("MyPartial", Model);  }
Run Code Online (Sandbox Code Playgroud)

如果我将它@section ScriptContent放在Index.cshtml中,它会正确显示.如果我将它放在我的部分视图中MyPartial.cshtml:

@model MyApp.ViewModels.MyViewModel

@section ScriptContent {
     <script src="@Url.Content("~/Scripts/Filters.js")" type="text/javascript"></script>    
} 
Run Code Online (Sandbox Code Playgroud)

在我的页面来源中,我有:

</body>
     <script src="/Scripts/jquery-1.5.1.min.js" type="text/javascript"></script>    
</html>
Run Code Online (Sandbox Code Playgroud)

意思@section是没有执行.可能是什么原因?谢谢

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

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

Razor MVC渲染部分

我正在使用具有类似内容的Razor MVC的主布局

@RenderSection("scripts", required: false)
Run Code Online (Sandbox Code Playgroud)

并有部分观点

_partial.cshtml

有这个

@section scripts
{
    @Scripts.Render("~/bundles/jquery")
}
Run Code Online (Sandbox Code Playgroud)

另一部分偏见

_partial_inside_partial.cshtml

那也有

@section scripts
{
    <script>
       $('div').addClass('red');
    </script>
}
Run Code Online (Sandbox Code Playgroud)

我有这个代码部分内部的问题,它在页面中间的负载,jquery是在底部?

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

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

ASP.NET MVC"组件"

有没有办法让页面的一部分呈现像一个小的子页面,如组件?

例如,如果我的所有页面上都有购物车?

asp.net asp.net-mvc partial-views

9
推荐指数
3
解决办法
3796
查看次数

Mvc 3 Razor:使用部分视图?

我在局部视图中定义了一个部分,我想从视图中指定部分的内容.但我无法想办法.在asp.net用户控件中,我们可以定义asp:占位符,并指定用户控件所在的aspx中的内容.我会很高兴任何建议.

谢谢

[edit]这是asp.net用户控件,我想将其转换为razor局部视图

用户控制:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="SpryListView.ascx.cs" Inherits="SpryListView" %>
<div spry:region="<%=this.SpryDataSetName%>" id="region<%=this.ID%>" style="overflow:auto;<%=this.DivStyle%>" >
<table class="searchList" cellspacing="0" style="text-align:left" width="100%">
    <thead>
        <tr>
            <asp:PlaceHolder ID="HeaderColumns" runat="server"></asp:PlaceHolder>
        </tr>
    </thead>
</table>
Run Code Online (Sandbox Code Playgroud)

用户控制代码:

public partial class SpryListView : System.Web.UI.UserControl
{
    private string spryDataSetName ;
    private string noDataMessage = "Arad???n?z kriterlere uygun kay?t bulunamad?.";
    private bool callCreatePaging;
    private string divStyle;
    private ITemplate headers = null;
    private ITemplate body = null;

    [TemplateContainer(typeof(GenericContainer))]
    [PersistenceMode(PersistenceMode.InnerProperty)]
    public ITemplate HeaderTemplate
    {
        get
        {
            return headers;
        }
        set
        {
            headers …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc partial-views razor sections

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