ASP.NET, как визуализировать пользовательский шаблон и передать его в основной шаблон - PullRequest
0 голосов
/ 06 июля 2011

Я могу сделать то же самое в 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

Sultan

Ответы [ 2 ]

1 голос
/ 06 июля 2011

Я не знаю Django, но из вашего описания похоже, что вы говорите о частичных взглядах. Таким образом, вы можете определить частичное (~/Views/Home/Foo.ascx):

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<div>some contents</div>

и затем в вашем главном представлении включите его:

<%= Html.Partial("Foo") %>

UPDATE:

Теперь, когда вы показали свой код, кажется, что вы используете метод RenderPartial. Этот метод ничего не возвращает. Он пишет прямо на выход. Вы используете это неправильно. Его следует использовать так:

<% Html.RenderPartial(ViewData["pd"].ToString()); %>

или вы также можете использовать Частичный помощник:

<%= 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>

Или, что еще лучше, используйте шаблонные помощники Html.DisplayFor и Html.EditorFor . Это лучший способ включить частичные компоненты в приложение ASP.NET MVC.

0 голосов
/ 06 июля 2011

Если вы используете WebForms, вы можете использовать MasterPage.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...