Отправить JSON на страницу Razor, вернуть HTML - PullRequest
1 голос
/ 28 апреля 2020

После того, как пользователь заполнил форму, мне нужно опубликовать содержимое формы обратно в JSON и получить кусок HTML для отображения. Это похоже на хороший случай для бритвенных страниц. Параметр BrandTemplateInfo в обработчике OnPost всегда равен нулю. Кажется, я не могу заставить 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"
    }
}

1 Ответ

0 голосов
/ 28 апреля 2020

Необходимо убедиться, что объект 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].

...