Я пытаюсь назвать этот метод:
RenderPartialExtensions.RenderPartial Method (HtmlHelper, String, Object, ViewDataDictionary)
http://msdn.microsoft.com/en-us/library/dd470561.aspx
но я не вижу способа построить ViewDataDictionary в выражении, как:
<% Html.RenderPartial("BlogPost", Post, new { ForPrinting = True }) %>
Какие-либо идеи, как сделать это?
Мне удалось сделать это со следующим методом расширения:
public static void RenderPartialWithData(this HtmlHelper htmlHelper, string partialViewName, object model, object viewData) {
var viewDataDictionary = new ViewDataDictionary();
if (viewData != null) {
foreach (PropertyDescriptor prop in TypeDescriptor.GetProperties(viewData)) {
object val = prop.GetValue(viewData);
viewDataDictionary[prop.Name] = val;
}
}
htmlHelper.RenderPartial(partialViewName, model, viewDataDictionary);
}
призывает его таким образом:
<% Html.RenderPartialWithData("BlogPost", Post, new { ForPrinting = True }) %>
Вы можете сделать:
new ViewDataDictionary(new { ForPrinting = True })
в качестве видадательного времени может принять объект, чтобы отразить в своем конструкторе.