我需要创建一个自定义的@Html.Partial()
方法。
用例
我有一个.cshtml页面,其中有多个部分,如下所示
<!-- EDUCATION -->
@Html.Partial("Templates/Create/Modules/Education")
<!-- JOBS -->
@Html.Partial("Templates/Create/Modules/Jobs")
我希望能够创建自定义.Partial()
方法。像这样的东西
@Html.CustomPartial("Templates/Create/Modules/Jobs", "jobs", "edit")
最后两个参数分别是module id
和action type id
。使用这些值,我将在我的CustomPartial
中做出我需要在输出中显示的内容。
我不知道该如何解决这个问题。请指教。
或者,如果有人可以指向Html.Partial
的源代码,那也非常有帮助。
您可以使用接受@Html.Partial()
的ViewDataDictionary
的重载来完成此操作
@Html.Partial("Templates/Create/Modules/Jobs", new ViewDataDictionary { { "module", someValue }, {"edit", anotherValue }})
然后在局部
@if(ViewData["module"] == someValue)
{
// do something
}
else
{
// do something else
}
如果你仍然感兴趣,here is the source code
这对我有用
public static class CustomHtmlHelpers
{
public static MvcHtmlString RenderModule(this HtmlHelper helper,
string partialViewName,
string moduleName,
string actionType)
{
var isAccessAllowed = _someService.someMethod(userId, moduleName, actionType);
if (isAccessAllowed)
{
return helper.Partial(partialViewName);
}
else
{
return MvcHtmlString.Empty;
}
}
}
@Html.Partial("../Partial_views/_Menu_creation", new ViewDataDictionary { { "Type",
"Menu" }, { "Menu", "Dimensions" }, { "Active", "Yes" }, { "Icon", "icon-1" }, {
"data-hide", "" } })
In partial view
@if (ViewData["Type"] == "Menu")
{
@if (ViewData["Active"] == "Yes")
{
<a data-check='@ViewData["Menu"]' role="button" class="active-menu">
<b class='@ViewData["Icon"]'></b>
<span>@ViewData["Menu"]</span>
</a>
}
else
{
}
}
@if (ViewData["Type"] == "Heading")
{
}
This is working