首页 > 解决方案 > 将 JSON 发布到 Razor 页面,返回 HTML

问题描述

用户填写表单后,我需要将表单内容以 JSON 格式发回,并获取一大块 HTML 以供显示。这对于剃刀页面来说似乎是一个很好的案例。OnPost 处理程序上的 BrandTemplateInfo 参数始终为空。我似乎无法从模型活页夹中填充 BrandTemplateInfo。我在这里想念什么?这对于 MVC 控制器来说过去很容易。我在这里想念什么?帮助?

public class PayNowCardModel : PageModel
{
    public void OnGet()
    {
    }

    public IActionResult OnPost([FromBody] BrandTemplateInfo brandTemplateInfo)
    {
        return Page();
    }


    public BrandTemplateInfo BrandTemplateInfo { get; set; }
}

HTTP 请求:

POST /terms/paynowcard HTTP/1.1
Host: xxxxxxxx
Content-Type: application/json
Cache-Control: no-cache

{
    "userForm": {
        "cardNumber": "4111111111111111",
        "paymentAmount": 123.33
    },
    "account": {
        "Creditor": {
            "Name": "big time creditor"
        },
        "accountId": "32432432432423"
    }
}

标签: asp.net-corerazor-pages

解决方案


您应该确保该BrandTemplateInfo对象具有与发​​布的 json 属性相同的名称属性:

public class BrandTemplateInfo
{
    public userForm userForm { get; set; }

    public account account { get; set; }
}

public class account
{
    public Creditor Creditor { get; set; }
    public string accountId { get; set; }
}

public class Creditor
{
    public string Name { get; set; }
}

public class userForm
{
    public string cardNumber { get; set; }
    public float paymentAmount { get; set; }
}

因此该模型绑定将与[FromBody]attribute 一起使用。


推荐阅读