Edu*_*elo 5 asp.net-core razor-pages
我在从剃刀页面返回部分视图时遇到问题,我的情况是
我有一个局部视图,它是一个表单并且有一个模型。我有 3 个表单驻留在单个剃刀页面上 表单 A 发布 ModelA 表单 B 发布 ModelB 我的问题是,我想在作为剃刀页面的父页面上处理特定的发布事件。我如何返回这个部分视图
OnPostModelA(ModelA model)
{
if(! ModelState.IsValid)
return Partialview("_CreateModelA", model);
}
Run Code Online (Sandbox Code Playgroud)
使用剃刀页面可以做到这一点还是不可能?我只想使用 ajax 返回带有指定模型的局部视图。
如您所知,Razor PagesPartialView在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
};
}
Run Code Online (Sandbox Code Playgroud)这里我使用 aViewData.Model来存储您的模型对象,假设您的模型类型命名为X1Model:
您可以在部分视图中使用它。
创建一个简单的局部视图,命名为_CreateModelA.cshtml :
@model HelloModel
AAAAA
<div>
@Model.Model.Welcome
</div>
Run Code Online (Sandbox Code Playgroud)
另一个部分视图名为_CreateModelB.cshtml:
@model HelloModel
BBBBBBBB
<div>
@Model.Model.Welcome
</div>
Run Code Online (Sandbox Code Playgroud)
最后,您可以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)
{
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个屏幕截图:
[NonAction]
public virtual PartialViewResult PartialView(string viewName, object model)
{
ViewData.Model = model;
return new PartialViewResult()
{
ViewName = viewName,
ViewData = ViewData,
TempData = TempData
};
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11781 次 |
| 最近记录: |