gpt4 book ai didi

asp.net-core - 从 Razor 页面处理程序返回部分 View

转载 作者:行者123 更新时间:2023-12-03 23:15:20 25 4
gpt4 key购买 nike

我在从 Razor 页面返回部分 View 时遇到问题,我的情况是

我有一个局部 View ,它是一种形式并且具有模型。我有 3 个表单驻留在单个 Razor 页面上
Form A 发布 ModelA
表格 B 发布模型 B
我的问题是,我想在作为 Razor 页面的父页面上处理他们的特定帖子事件。
我将如何返回这个部分 View

OnPostModelA(ModelA model) 
{
if(! ModelState.IsValid)
return Partialview("_CreateModelA", model);

}

这是否可以使用 Razor 页面或这是不可能的?
我只想使用ajax返回带有指定模型的局部 View 。

最佳答案

  • 如您所知,Razor Pages 没有等效的 PartialView PageModel上的方法.如果您确实想在 PageModel 中调用不同的局部 View 方法,只需添加一个 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 :

    您可以在局部 View 中使用它。

    创建一个名为 _CreateModelA.cshtml 的简单局部 View :
    @model HelloModel

    AAAAA
    <div>
    @Model.Model.Welcome
    </div>

    另一个名为 _CreateModelB.cshtml 的局部 View :
    @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
  • 但是,不建议在 PageModel 中放置部分 View 逻辑。在页面文件中使用它,如下所示更好:


  • @if(){
    <partial name="" />
    }else{
    <partial name="" />
    }

    关于asp.net-core - 从 Razor 页面处理程序返回部分 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52046055/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com