asp.net-core - 从剃刀页面处理程序返回部分视图
问题描述
我在从剃刀页面返回部分视图时遇到问题,我的情况是
我有一个局部视图,它是一种形式并且有一个模型。我有 3 个表单驻留在单个剃须刀页面上 表单 A 发布 ModelA 表单 B 发布 ModelB 我的问题是,我想在父页面上处理特定的发布事件,这是一个剃须刀页面。我将如何返回这个部分视图
OnPostModelA(ModelA model)
{
if(! ModelState.IsValid)
return Partialview("_CreateModelA", model);
}
这可能使用剃刀页面还是不可能的?我只想使用ajax返回带有指定模型的部分视图。
解决方案
如您所知,Razor Pages 上没有等效
PartialView
的方法PageModel
。如果您确实想在PageModel
method 中调用不同的 parial 视图,只需在您中添加一个PartialView
Helper MethodPageModel
:[NonAction] public virtual PartialViewResult PartialView(string viewName, object model) { ViewData.Model = model; return new PartialViewResult() { ViewName = viewName, ViewData = ViewData, TempData = TempData }; }
在这里,我使用 aViewData.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)
{
// ...
}
}
这是一个屏幕截图:
- 但是,不建议将局部视图逻辑放在 PageModel 中。在下面的页面文件中使用它会更好:
@if(){
<partial name="" />
}else{
<partial name="" />
}
推荐阅读
- r - Shiny中基于向量的动态输入
- c# - Microsoft.Office.Interop.Excel 14.0.0.0 与 MS Office 2019 的兼容性
- reactjs - 将外部数据传递给现有的 React 组件
- html - 通过 iframe 中的触摸禁用水平滚动
- java - jstat 和 jcmd 对元空间内存给出不同的答案
- python - 如何解决“azure.common.AzureHttpError: This request is not authorized to perform this operation.ErrorCode: AuthorizationFailure”
- python-3.x - 有什么方法可以从 docker 容器中获取 EC2 实例 ip?
- php - 如何使用 mysqli 从两个不同的表中创建一个搜索字段?
- python - 关于使用 python 进行每周聚合的问题
- laravel - Laravel 用户模型需要多次扩展