标签: asp.net-mvc-partialview

ASP.NET MVC 3 - 部分vs显示模板与编辑器模板

所以,标题应该说明一切.

要在ASP.NET MVC中创建可重用的组件,我们有3个选项(可能是其他我没有提到的):

局部视图:

@Html.Partial(Model.Foo, "SomePartial")
Run Code Online (Sandbox Code Playgroud)

自定义编辑模板:

@Html.EditorFor(model => model.Foo)
Run Code Online (Sandbox Code Playgroud)

自定义显示模板:

@Html.DisplayFor(model => model.Foo)
Run Code Online (Sandbox Code Playgroud)

就实际的View/HTML而言,所有三种实现都是相同的:

@model WebApplications.Models.FooObject

<!-- Bunch of HTML -->
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是 - 你何时/如何决定使用三者中的哪一个?

我真正想要的是在创建问题之前要问自己的问题列表,其答案可用于决定使用哪个模板.

以下是我使用EditorFor/DisplayFor找到的2件更好的东西:

  1. 它们在呈现HTML帮助程序时尊重模型层次结构(例如,如果在"Foo"模型上有"Bar"对象,则"Bar"的HTML元素将使用"Foo.Bar.ElementName"呈现,而部分将具有"的ElementName").

  2. 更强大,例如,如果你List<T>在ViewModel中有一些东西,你可以使用@Html.DisplayFor(model => model.CollectionOfFoo),而MVC足够聪明,可以看到它是一个集合,并为每个项目渲染单个显示(而不是Partial,这需要一个明确的环).

我也听说DisplayFor呈现了一个"只读"模板,但我不明白 - 我不能在那里扔一个表格吗?

有人能告诉我一些其他原因吗?是否有一个列表/文章比较这三个?

asp.net-mvc asp.net-mvc-partialview editortemplates razor asp.net-mvc-3

302
推荐指数
3
解决办法
7万
查看次数

将其他ViewData传递给强类型的局部视图

我有一个强类型的局部视图,它接受一个ProductImage,当它被渲染时,我还想为它提供一些我在包含页面中动态创建的额外ViewData.如何通过RenderPartial调用将强类型对象和自定义ViewData传递给局部视图?

var index = 0;
foreach (var image in Model.Images.OrderBy(p => p.Order))
{
  Html.RenderPartial("ProductImageForm", image); // < Pass 'index' to partial
  index++;
}
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc viewdata asp.net-mvc-partialview

169
推荐指数
6
解决办法
11万
查看次数

如何将参数传递给ASP.NET MVC中的局部视图?

假设我有这个局部视图:

Your name is <strong>@firstName @lastName</strong>
Run Code Online (Sandbox Code Playgroud)

这可以通过仅限儿童的动作来访问:

[ChildActionOnly]
public ActionResult FullName(string firstName, string lastName)
{

}
Run Code Online (Sandbox Code Playgroud)

我想在另一个视图中使用这个局部视图:

@Html.RenderPartial("FullName")
Run Code Online (Sandbox Code Playgroud)

换句话说,我希望能够将firstName和lastName从视图传递到局部视图.我该怎么办?

model-view-controller asp.net-mvc controller asp.net-mvc-partialview asp.net-mvc-3

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

asp.net MVC局部视图控制器动作

我对Web应用程序开发非常陌生,我认为我会从最近的技术开始,所以我正在努力学习asp.net以及MVC框架.对于MVC专业人士来说,这可能是一个非常简单的问题.

我的问题是部分视图是否应该有关联的操作,如果是,那么只要普通页面RenderPartial()在局部视图上使用,是否会调用此操作?

asp.net-mvc asp.net-mvc-partialview html.renderpartial

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

如何在视图中加载局部视图

这部分观点让我很困惑......

我想在主视图中加载局部视图...

这是简单的例子......

我正在加载Homecontroller Index操作的Index.cshtml作为主页面.

在index.cshtml我正在创建一个链接

@Html.ActionLink("load partial view","Load","Home")
Run Code Online (Sandbox Code Playgroud)

在HomeController中我添加了一个名为的新Action

public PartialViewResult Load()
{
    return PartialView("_LoadView");
}
Run Code Online (Sandbox Code Playgroud)

在_LoadView.cshmtl我只是有一个

<div>
    Welcome !!
</div>
Run Code Online (Sandbox Code Playgroud)

但是,当运行项目时,index.cshtml首先渲染并向我显示链接"加载部分视图"...当我点击它时,它转到新页面instade,将欢迎消息从_LoadView.cshtml呈现到index.cshtml .

有什么不对?

注意:我不想通过AJAX加载页面或者不想使用Ajax.ActionLink

asp.net-mvc asp.net-mvc-partialview razor asp.net-mvc-3

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

MVC Html.Partial或Html.Action

我是asp.net MVC的新手,所以请耐心等待.我需要构建一个在多个视图中重复的菜单.什么会更好地服务于目的Html.ActionHtml.Partial.

asp.net-mvc asp.net-mvc-partialview

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

控制器'..'上找不到公共操作方法'..'

我想在我的mvc项目的每个视图页面上放一个随机图像.所以我创建了一个方法,它返回一个partialView并在共享的Layout页面中调用该方法.

当我尝试使用正确的用户名和密码登录时,此工作正常.使用的是插入的,每个页面都包含一个随机图像.但是当我给出用户名和密码的无效组合时.共享布局页面找不到我想用我调用的控制器,@Html.Action并且实际上应该返回登录视图,并带有错误消息"用户名和密码的无效组合"和当前的随机图像.

的InnerException:

{"在控制器'Project.WebUI.Controllers.HomeController'上找不到公共操作方法'RandomSponsor'."}

我在共享布局中的Html.Action.

@Html.Action("RandomSponsor", "Home")
Run Code Online (Sandbox Code Playgroud)

家庭控制器中的方法.

    [HttpGet]   
[ChildActionOnly]
public ActionResult RandomSponsor()
{
    var model = service.getRandomSponsor();
    return PartialView("RandomSponsor", model);
}
Run Code Online (Sandbox Code Playgroud)

getRandomSponsor方法工作正常,这个方法总是返回一个随机字符串值,返回到RandomSponsor.cshtml视图.

RandomSponsor.schtml(仅包含图像字符串)

<img src="~/Content/Images/Advert/@(Model)" alt="a" />
Run Code Online (Sandbox Code Playgroud)

我在网上搜索了这个问题,但没有找到解决方案,有没有人知道这个问题的答案?HttpGet的HttpGet可能会有什么问题吗?

问候.

asp.net-mvc asp.net-mvc-partialview

44
推荐指数
3
解决办法
6万
查看次数

MVC表单无法发布对象列表

所以我有一个MVC Asp.net应用程序有问题.基本上,我有一个包含表单的View,其内容绑定到一个对象列表.在这个循环中,它加载PartialView与循环的项目.现在一切正常,直到表格的提交.提交后,控制器将发送一个空对象列表.下面的代码说明了这些问题.

父视图:

@model IEnumerable<PlanCompareViewModel>
@using (Html.BeginForm("ComparePlans", "Plans", FormMethod.Post, new { id = "compareForm" }))
{
<div>
    @foreach (var planVM in Model)
    {
        @Html.Partial("_partialView", planVM)
    }
</div>
}
Run Code Online (Sandbox Code Playgroud)

_partialView:

@model PlanCompareViewModel
<div>
    @Html.HiddenFor(p => p.PlanID)
    @Html.HiddenFor(p => p.CurrentPlan)
    @Html.CheckBoxFor(p => p.ShouldCompare)
   <input type="submit" value="Compare"/>
</div>
Run Code Online (Sandbox Code Playgroud)

这些是上述代码的类:

PlanViewModel:

public class PlansCompareViewModel
{

    public int PlanID { get; set; }
    public Plan CurrentPlan { get; set; }
    public bool ShouldCompare { get; set; }
    public PlansCompareViewModel(Plan plan)
    {
        ShouldCompare = false;
        PlanID …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc asp.net-mvc-partialview asp.net-mvc-4

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

ASP.NET MVC中部分视图的正确位置是什么?

有人会确认ASP.NET MVC中部分视图的最佳位置吗?

我的想法是,如果它是一个全球视图,将在许多地方使用然后共享.

如果它是视图的一部分被包装到局部视图中以使代码读取更容易,那么它应该进入Views/Controller目录

我纠正还是错过了什么?

asp.net-mvc partial-views asp.net-mvc-partialview

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

如何在MVC3中的局部视图中渲染一个截面?

在MVC3项目中,我有一个带有此代码的"_Layout.vbhtml"文件

<!DOCTYPE html>
<html>
  <head>
  </head>
  <body>
    ...
    <script src="@Url.Content("~/Scripts/jquery-1.8.2.min.js")"></script>
    @RenderSection("Scripts", false)
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

然后,我在共享文件夹中有一个部分视图"ValidationScripts.vbhtml"

@Section Scripts
    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.fix.js")"></script>  
    <script src="@Url.Content("~/Scripts/localization/messages_de.js")"></script>      
End Section
Run Code Online (Sandbox Code Playgroud)

如果我从这样的视图中调用部分视图...

@ModelType MvcExample.MyModel
@Code
    ViewData("Title") = "Test"
End Code

@Html.Partial("ValidationScripts")

<h2>Just a Test</h2>
...
Run Code Online (Sandbox Code Playgroud)

"脚本"部分未在页面上呈现,输出HTML为

<!DOCTYPE html>
<html>
  <head>
  </head>
  <body>
    ...
    <script src="@Url.Content("~/Scripts/jquery-1.8.2.min.js")"></script>

  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

如何在局部视图中渲染剖面?

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

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