标签: partial-views

ASP.net MVC - 呈现包含不同类型的List,每种类型具有不同的视图

想象一下,我有一个实现名为ISummary的接口的对象列表.此列表中的对象可能具有其他属性,即.

public interface ISummary {
  Guid Id {get;set;}
  string Title {get;set;}
  DateTime Created {get;set;}
}

public class GigSummary: ISummary {
 Guid Id {get;set;}
 string Title {get;set;}
 DateTime Created {get;set;}
 string VenueName {get;set}
 string Band {get;set;}
}

public class NewsSummary: ISummary {
 Guid Id {get;set;}
 string Title {get;set;}
 DateTime Created {get;set;}
 string Author{get;set}
}
Run Code Online (Sandbox Code Playgroud)

我现在将这个Gigs和News Summary对象列表(作为一个ISummary列表)作为模型传递给视图.

我想使用列表中包含的每种类型的不同部分来呈现此列表.

我怎么能这样做ASP.NET MVC?

asp.net-mvc partial-views

5
推荐指数
1
解决办法
2251
查看次数

当使用Ajax.ActionLink加载时,ASP.Net MVC在PartialView中运行JavaScript

我有一个关于ASP.Net MVC的问题.

我正在使用Ajax.ActionLink来加载PartialView.

在这个局部视图中是一个我想要调用的javascript函数.

但是我无法弄清楚如何实现这一目标.

我在设置Ajax.ActionLink时尝试使用AjaxOptions {OnSuccess ="functionInPartialView"}但由于某种原因它无法看到Javascript.

编辑:PartialView是JavaScript和Html的混合

ajax asp.net-mvc partial-views

5
推荐指数
2
解决办法
4397
查看次数

当model是父模型上的属性且为null时,强类型部分视图出错

我在调用时收到以下异常Html.RenderPartial:

传递到字典中的模型项是'ChildClass'类型,但是这个字典需要一个'ParentClass'类型的模型项.

这两个类与此相关:

public class ChildClass { /* properties */ }

public class ParentClass
{
    public ChildClass ChildProperty { get; set; }

    /* other properties */
}
Run Code Online (Sandbox Code Playgroud)

我有一个实例ParentClass,其中的价值ChildPropertynull.

我有两个部分视图,ParentView(ViewUserControl<ParentClass>)和ChildView(ViewUserControl<ChildClass>).

在第一个视图中,我有以下...

<% Html.RenderPartial("~/Views/Controls/ChildView.ascx", Model.ChildProperty); %>
Run Code Online (Sandbox Code Playgroud)

这是抛出此帖子顶部列出的异常的行.

如果ChildProperty不为null,我已验证了正确的功能.为什么MVC认为此属性的空值是父类型?

我可以通过添加仅呈现ChildViewif ChildProperty不为null的代码来解决此问题,但是这一半使得查看失败了.

asp.net-mvc partial-views

5
推荐指数
1
解决办法
2209
查看次数

MVC中的部分视图

我是MVC的新手,刚刚遇到了我需要一些帮助的场景.

我将简要概述我的场景,好像它是一个我更熟悉的Web窗体应用程序.

场景:

我有一个主页,其中列出了最近的10篇博客文章,以及"存档树"(按时间顺序列出年份/月份,以及这些年/月中每个博客条目的链接).

我将此"存档树"创建为用户控件,并在我的主页上输出该用户控件.

我还将此存档树用户控件输出到我的主博客页面的一侧 - 博客页面仅显示一篇博文的详细信息.

我还想在我的Web应用程序中的几个其他页面上重用此存档树控件.

MVC:

我有一个'PhotoController'控制器,它有一个ActionResult方法,负责获取所选照片博客帖子(id)的详细信息.

我想在我的照片博客页面上包含一个部分视图(存档树,它将呈现多个记录),它将遍历多个照片记录(List<Photo>).

我可以创建一个视图模型,它包含一个'Photo'属性(用于渲染单个照片博客记录详细信息)和一个名为'PhotoArchive'的第二个属性,它是一个List<Photo>.

我对这种方法的关注是,当我在整个网站的某些其他部分重新使用这个"存档树"部分视图时,我不一定想要通过相同的视图模型(包含父视图中的"Photo"和"PhotoArchive"对象.例如,我的主页不需要通过"照片"对象传递到呈现主页的视图,但我仍然想在我的主页上的其余HTML中输出我的"存档树"部分视图.

我期待有一个简单的解决方案,我目前还不知道对MVC这么新.

asp.net-mvc partial-views

5
推荐指数
1
解决办法
867
查看次数

动态局部视图+ jquery表单劫持+客户端验证=无法正常工作

我正在使用MVC 3与不引人注目的javascript进行客户端验证.

我有一个可以点击的行的表.单击时,我想调出一个动态加载的局部视图.这是代码:

function GetStuff(id) {
    $.ajax(
    {
        url: "Edit/" + id,
        success: function (result) {
            $("#DivTest").html(result);
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

这一切都有效.问题是当我尝试使用jquery在partial中保存某些东西时.表单被劫持,如下所示:

$(function () {
    $.post($(this).attr("action"),
        $(this).serialize(),
        function (data) {
            alert("test");
        });
    e.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)

这一切使得客户端验证不起作用.即使我遗漏了一些必要的值,它也会发布帖子.如果我没有使用ajax发布或者如果部分加载在页面加载(非动态)上,这一切都有效.


我尝试过的:

我试着把这个放在帖子之前:

if($('form').validate().form()){
    ...
}
Run Code Online (Sandbox Code Playgroud)

这只是每次都返回真实..

从这篇文章我得到2个建议 ASP.NET MVC 2使用jQuery加载局部视图 - 没有客户端验证

添加

Sys.Mvc.FormContext._Application_Load(); 
Run Code Online (Sandbox Code Playgroud)

部分加载后..并将帖子的数据类型设置为"html".都没有奏效.

我也没试过这个方法:http: //www.deepcode.co.uk/2010/08/mvc-ootb-validation-when-pulling-in.html

这种技术组合是我认为很常见的东西,为什么它很难让它起作用?任何帮助都非常感谢.谢谢

validation asp.net-mvc jquery partial-views dynamic

5
推荐指数
1
解决办法
3620
查看次数

是否可以嵌套部分视图?

我知道这个问题,但是原始海报接受了一个不涉及嵌套的解决方案。我肯定想嵌套部分视图(当然,除非有更好的方法)。

我有一个页面可以Ajax加载几个局部视图之一,具体取决于用户在主视图中的操作。(这些视图是局部的,因为我的理解是,如果您想从Ajax调用中加载大量其他内容,则需要从调用中返回PartialViewResult。)几个局部视图具有一个公共元素,即下拉菜单,我希望喜欢将自己的部分观点考虑在内。

但这是行不通的。每个局部视图都有一个关联的视图模型,即它们的模型。对于嵌套的部分视图,我想从父视图的视图模型传递单个字段的值(可为null的int)作为嵌套的部分视图的模型。

但是在运行时,我收到一条错误消息,说我的局部视图需要Nullable <int>但收到X,其中X是与父局部视图关联的视图模型的类型。

所以我的问题是双重的:

  1. 是否完全不允许嵌套局部视图?(在这种情况下,我希望框架会检查情况并抛出一个如此明确表示的错误。)

  2. 除了局部视图之外,是否有办法获得我希望的分解出的公共接口元素的效果?我已经考虑过但没有尝试创建一个编辑模板,因为我认为对于部分视图不起作用的内容对那些视图不起作用,但是我可能是错的。

ETA:我发现了我的问题:当您将模型的空值传递给HtmlHelper.Partial或RenderPartial时,假设您只是没有传递模型,则渲染引擎会代替调用的局部视图的模型来代替该空值。 。

在我的情况下,这是不正确的:我的Nullable <int>是Nullable,因为在设置之前,它为null!null在语义上有意义!

但这就是为什么我遇到问题。

partial-views asp.net-mvc-3

5
推荐指数
1
解决办法
6592
查看次数

ASP.NET默认的MVC4应用程序内容页面没有布局参考?

我创建了一个mvc4网络应用程序.用剃刀视图引擎.您知道布局页面和内容页面(主页,联系人,关于等).但是没有引用内容页面的布局.

内容页面不应包括:

Layout = "~/Views/Shared/_Layout.cshtml";
Run Code Online (Sandbox Code Playgroud)

在内容页面中,这段代码丢失了.它们有效.没有布局参考,它如何做到这一点?

partial-views razor asp.net-mvc-4

5
推荐指数
1
解决办法
7250
查看次数

部分视图不令人耳目一新

我在cshtml页面上有一个部分视图如下: -

@model MvcCommons.ViewModels.CompositeViewModel

@{
ViewBag.Title = "Edit";
}

@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
    <fieldset>
    <legend>Article</legend>

    @Html.HiddenFor(model => model.ArticleViewModel.Article.ArticleID)

    <div class="editor-label">
        @Html.LabelFor(model => model.ArticleViewModel.Article.CategoryID, "Category")
    </div>
    <div class="editor-field">
        @Html.DropDownListFor(model => model.ArticleViewModel.Article.CategoryID, (SelectList)ViewBag.CategoryID) 
        @Html.ValidationMessageFor(model => model.ArticleViewModel.Article.CategoryID)
    </div>

    <div class="editor-label">
        @Html.LabelFor(model => model.ArticleViewModel.Article.ArticleTitle)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.ArticleViewModel.Article.ArticleTitle)
        @Html.ValidationMessageFor(model => model.ArticleViewModel.Article.ArticleTitle)
    </div>

    <div class="editor-label">
        @Html.LabelFor(model => model.ArticleViewModel.Article.ArticleDate)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.ArticleViewModel.Article.ArticleDate)
        @Html.ValidationMessageFor(model => model.ArticleViewModel.Article.ArticleDate)
    </div>

        @Html.HiddenFor(model => model.PageViewModel.Page.PageTitle, new { id = "PageTitle" })
        @Html.HiddenFor(model => model.PageViewModel.Page.PageAction, new { id …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc jquery partial-views razor

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

在按钮单击上加载部分视图

这个问题可能会重复,但我有一些问题.我的页面中有一个下拉列表和搜索按钮.我在更改事件的下拉列表中使用模型绑定视图.当点击搜索按钮时,在下拉列表中选择的关于记录列表的值将在局部视图中显示.这一切都正确完成如下:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<ApricaCRMEvent.Models.CRM.DatabaseEntities.CRM_Doctor_Request>" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    MDLNoDDLIndex
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <script src="../../Scripts/jquery.js" type="text/javascript"></script>
    <script src="../../Scripts/jquery-migrate-1.0.0.js" type="text/javascript"></script>

    <script type="text/javascript">
        //script for binding drop down list value from view to model
        $("#viewlist").hide();
        function TestFun() 
        {
            var mdlno = $("#ddlMDLNo").val();
            var txtmdlno = document.getElementById("Request_For_Id");
            txtmdlno.value = mdlno;
            //alert(txtmdlno.value);
           $("#viewlist").hide();
        }
         var mdlno = $("#ddlMDLNo").val();
         function Datalist(mdlno) {
             $("#viewlist").show();
             $.ajax({
                 url: "/Search/MDLNoDataList", //url or controller with action
                 type: "POST",
                 data: mdlno,
                 dataType: "html",

                 success: function (data) …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc jquery partial-views

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

带MV的ASP.NET MVC PartialView

我是第一个MVC项目.我想创建一个带有标题的页面,并在此标题中放置一个带有类别列表的局部视图.

这就是我到目前为止所做的:我创建了母版页(_Home.cshtml).比在共享文件夹中我创建了一个View(Category.cshtml).看我的照片. 在此输入图像描述

我的Category.cshtml内容:

@model IEnumerable<ArtSchool.Models.Category>
<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table>
<tr>
    <th>
        @Html.DisplayNameFor(model => model.Name)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.Visible)
    </th>
    <th></th>
</tr>

@foreach (var item in Model) {
<tr>
    <td>
        @Html.DisplayFor(modelItem => item.Name)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.Visible)
    </td>
    <td>
        @Html.ActionLink("Edit", "Edit", new { id=item.ID }) |
        @Html.ActionLink("Details", "Details", new { id=item.ID }) |
        @Html.ActionLink("Delete", "Delete", new { id=item.ID })
    </td>
</tr>
Run Code Online (Sandbox Code Playgroud)

}

我的主页文件:

@{
Layout = null;
}

<!DOCTYPE html>

 <html>
 <head>
<meta name="viewport" content="width=device-width" />
<title>_Home</title> …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc list partial-views

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