Как вы знаете, Razor Pages не имеют эквивалентного PartialView
метода для PageModel
. Если вы хотите вызывать различные парциальные представления в методе PageModel
, просто добавьте в вас PartialView
вспомогательный метод PageModel
:
[NonAction]
public virtual PartialViewResult PartialView(string viewName, object model)
{
ViewData.Model = model;
return new PartialViewResult()
{
ViewName = viewName,
ViewData = ViewData,
TempData = TempData
};
}
Здесь я использую ViewData.Model
для хранения вашего объекта модели, скажем, ваш тип модели назван X1Model
:
Вы можете использовать его в частичных видах.
Создать простое частичное представление с именем _CreateModelA.cshtml
:
@model HelloModel
AAAAA
<div>
@Model.Model.Welcome
</div>
и другой частичный вид с именем _CreateModelB.cshtml
:
@model HelloModel
BBBBBBBB
<div>
@Model.Model.Welcome
</div>
Наконец, вы можете вернуть PartialView
в вашу PageModel:
public class HelloModel : PageModel
{
public X1Model Model { get; set; }
public ActionResult OnGet(int rand = 0)
{
var flag = rand % 2 == 0 ? true : false;
var model = new HelloModel() {
Model = new X1Model {
Welcome = "Hello,world",
}
};
if (flag)
{
return PartialView("_CreateModelA", model);
}
else
{
return PartialView("_CreateModelB", model);
}
}
[NonAction]
public virtual PartialViewResult PartialView(string viewName, object model)
{
// ...
}
}
Вот скриншот:
![enter image description here](https://i.stack.imgur.com/QdH1y.png)
- Однако не рекомендуется размещать частичную логику представления в PageModel. Использование его в файле подкачки, как показано ниже, намного приятнее:
@if(){
<partial name="" />
}else{
<partial name="" />
}