在ASP.NET MVC中,有什么区别:
Html.Partial
和 Html.RenderPartial
Html.Action
和 Html.RenderAction
如何从另一个文件夹中呈现部分(用户控件)视图?使用预览3我曾经用完整的路径调用RenderUserControl,但是升级到预览5这是不可能的.相反,我们得到了RenderPartial方法,但它没有提供我正在寻找的功能.
如何使用jquery渲染局部视图?
我们可以像这样渲染局部视图:
<% Html.RenderPartial("UserDetails"); %>
Run Code Online (Sandbox Code Playgroud)
我们如何使用jquery做同样的事情?
我有一个页面:
<%@ Page Inherits="System.Web.Mvc.View<DTOSearchResults>" %>
Run Code Online (Sandbox Code Playgroud)
在其上,以下内容:
<% Html.RenderPartial("TaskList", Model.Tasks); %>
Run Code Online (Sandbox Code Playgroud)
这是DTO对象:
public class DTOSearchResults
{
public string SearchTerm { get; set; }
public IEnumerable<Task> Tasks { get; set; }
Run Code Online (Sandbox Code Playgroud)
这是部分:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<Task>>" %>
Run Code Online (Sandbox Code Playgroud)
当Model.Tasks不为null时,一切正常.但是当它为null时,我得到:
传递到字典中的模型项的类型为'DTOSearchResults',但此字典需要类型为'System.Collections.Generic.IEnumerable`1 [Task]'的模型项.
我认为它一定不知道使用哪个重载,所以我这样做(见下文)是明确的,但我仍然得到同样的问题!
<% Html.RenderPartial("TaskList", (object)Model.Tasks, null); %>
Run Code Online (Sandbox Code Playgroud)
我知道我可以通过检查null,或者甚至不传递null来解决这个问题,但这不是重点.为什么会这样?
我创建了一个名为_Test.cshtml的测试部分页面,并将其放在与我将调用它的视图相同的目录中,这里是:
<div>hi</div>
Run Code Online (Sandbox Code Playgroud)
在调用cshtml视图中,我只是简单地说:
@Html.RenderPartial("_Test")
Run Code Online (Sandbox Code Playgroud)
这给了我错误:
CS1502:'System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)'的最佳重载方法匹配有一些无效的参数
我也尝试了相同结果的完整路径.
我很困惑为什么这样做是这样的,我想我错过了一些简单的东西?
渲染子模板的适当方法是什么?
有什么区别?两者似乎都适合我.
为什么@Html.RenderPartial()
不再有效?
我这样称呼我的部分观点:
<% Html.RenderPartial("~/controls/users.ascx"); %>
Run Code Online (Sandbox Code Playgroud)
我可以将参数传递给局部视图吗?我将如何在实际的users.ascx页面中访问它们?
我希望能够为部分视图提供一种在视图底部包含JavaScript代码/文件的方法.这将使部分视图包含它们所依赖的任何JavaScript文件.例如,如果我想编写需要创建JQueryUI对话框的部分,我想导入JQueryUI JavaScript文件以及添加呈现对话框的JavaScript代码.
我目前正在父视图中编写此代码,这使得使用局部视图毫无意义.
我知道RenderPartial
多次调用会导致脚本被多次包含.一旦我知道如何从局部视图中将JavaScript实际包含到主视图中,这是一个可解决的问题.
javascript asp.net-mvc renderpartial partial-views asp.net-mvc-3
有没有办法ViewDataDictionary
用一行代码创建一个模型和附加属性.我试图RenderPartial
在组装模型和一些额外的显示配置属性时调用强类型视图,而无需跨多行显式组装ViewDataDictionary.似乎有可能给出RenderPartial
一个模型object
和a 的重载,ViewDataDictionary
但看起来它只是忽略了ViewDataDictionary
它们都被填充.
// FAIL: This will result in ViewData being a ViewDataDictionary
// where Model = MyModelObject and there are no other parameters available.
this.Html.RenderPartial("SomePartialView", MyModelObject, new ViewDataDictionary(new { SomeDisplayParameter = true }));
Run Code Online (Sandbox Code Playgroud)
我发现其他人有同样的问题,但他们的解决方案是我发现的相同的多线概念:ViewDataDictionary
用模型创建离散,添加新参数并在RenderPartial
调用中使用它.
var SomeViewData = new ViewDataDictionary(MyModelObject);
SomeViewData.Add("SomeDisplayParameter", true);
this.Html.RenderPartial("SomePartialView", SomeViewData);
Run Code Online (Sandbox Code Playgroud)
我总是可以将这个逻辑包装成一个ChainedAdd
方法,该方法返回一个重复的字典,并添加了新的元素,但似乎我错过了一些创建一个ViewDataDictionary
可以为我做这个的方法(这比我希望的更多开销)对于).
this.Html.RenderPartial("SomePartialView", new ViewDataDictionary(MyModelObject).ChainedAdd("SomeDisplayParameter", true));
public static ViewDataDictionaryExtensions {
public static ViewDataDictionary ChainedAdd(this ViewDataDictionary source, …
Run Code Online (Sandbox Code Playgroud) 我需要表示两个数据库实体,我需要在一个页面中输出它们.
我有类似的东西
视图Def ViewA ViewB测试ViewC
我希望ViewC显示ViewA,它显示ViewB.
现在我正在使用这样的东西:
// View C
<!-- bla -->
<% Html.RenderPartial(Url.Content("../Definition/DefinitionDetails"), i); %>
// View A
<!-- bla -->
<% Html.RenderPartial(Url.Content("../Definition/DefinitionEditActions")); %>
Run Code Online (Sandbox Code Playgroud)
这样做有好处吗?我发现用相对路径名链接会烧掉你.有小费吗?
我有机会像...那样做些什么
Html.RenderPartial( "定义", "DefinitionDetails",i)的; ?
谢谢您的帮助
asp.net-mvc ×10
renderpartial ×10
javascript ×2
razor ×2
.net ×1
c# ×1
jquery ×1
renderaction ×1