我在从剃须刀页面返回部分视图时遇到问题,我的情况是
我有一个局部视图,它是一种形式,并且具有一个模型。我在一个剃刀页面上有3种表格 表格A发布ModelA 表格B发布ModelB 我的问题是,我想在父页面(剃刀页面)上处理特定的发布事件。 我将如何返回此局部视图
OnPostModelA(ModelA model)
{
if(! ModelState.IsValid)
return Partialview("_CreateModelA", model);
}
使用剃须刀页面是否可行? 我只想使用ajax返回带有指定模型的partialview。
答案 0 :(得分:1)
如您所知,Razor Pages在PartialView
上没有等效的PageModel
方法。如果您确实想在PageModel
方法中调用不同的视图,只需在PartialView
中添加一个PageModel
Helper方法:
[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>
最后,您可以在PageModel中返回PartialView
:
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)
{
// ...
}
}
这是屏幕截图:
@if(){
<partial name="" />
}else{
<partial name="" />
}