我可以在Django
使用render_to(...)
但ASP.NET。
我需要在一个asp.net页面中提供不同的表单,所以我想渲染自定义表单模板并将其传递到主页面。
如何制作这些东西?
我试试这段代码
<%: Html.RenderPartial(ViewData["pd"].ToString(), ViewData)%>
我得到了
'System.Web.Mvc.HtmlHelper<dynamic>' does not contain a definition for 'RenderPartial' and the best extension method overload 'System.Web.Mvc.Html.RenderPartialExtensions.RenderPartial(System.Web.Mvc.HtmlHelper, string)' has some invalid arguments
苏丹
答案 0 :(得分:1)
我不知道Django,但从您的描述中看起来您似乎在谈论部分观点。因此,您可以定义部分(~/Views/Home/Foo.ascx
):
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<div>some contents</div>
然后在主视图中包含它:
<%= Html.Partial("Foo") %>
更新:
现在您已经显示了代码,似乎您正在使用RenderPartial
方法。此方法不返回任何内容。它直接写入输出。您使用不正确。它应该像这样使用:
<% Html.RenderPartial(ViewData["pd"].ToString()); %>
或者你也可以使用Partial helper:
<%= Html.Partial(ViewData["pd"].ToString()) %>
现在就传递信息到这个局部而言,我非常强烈建议你摆脱任何ViewData并使用强类型视图和视图模型。因此,例如,您将拥有此模型的强类型主视图:
public class MyViewModel
{
public string Foo { get; set; }
public SomeOtherViewModel Bar { get; set; }
}
然后你就可以做到这一点:
<%= Html.Partial(Model.Foo, Model.Bar) %>
然后将您的部分强力输入SomeOtherViewModel
:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<SomeOtherViewModel>" %>
<div><%: Model.SomePropertyOfBar %></div>
甚至更好,请使用templated helpers Html.DisplayFor and Html.EditorFor。它们是将部分内容包含在ASP.NET MVC应用程序中的最佳方式。
答案 1 :(得分:0)
如果您使用的是Web表单,则可以使用母版页。