Связанное свойство имеет значение null при вызове ajax с использованием Razor - PullRequest
0 голосов
/ 27 мая 2020

Допустим, у меня есть связанное текстовое поле:

.cs html:

<div class="form-group"><textarea class="form-control" asp-for="Header" rows="3> </textarea>
</div>
<button type="button" id="printTestButton" asp-page-handler="PrintPreview" class="btn btn-primary"> button </button>

я не показываю вам код ajax .. так как это не проблема .

Код за .cs:

public class IndexModel : PageModel
{
    [BindProperty]
    public string Header { get; set; }

    public void OnGet()
    {
        this.Header = "Foo";
    }

    public ActionResult OnGetTest()
    {
        console.log(this.Header);

        return new JsonResult("Received " + header + " at " + DateTime.Now);
    }
}

Итак, когда я вызываю веб-страницу, вызывается функция OnGet. Затем я устанавливаю свойство Header равным «Foo». Magi c происходит, я вижу в пользовательском интерфейсе, что текстовое поле содержит строку «Foo».

enter image description here

Теперь проблема: когда я нажимаю кнопку, а затем я вызываю с Ajax функцию OnGetTest (), свойство Header имеет значение null.

Почему заголовок пустой, если я просто установил его равным «Foo»? В пользовательском интерфейсе мы видим «Foo». Почему свойство привязки в данный момент не работает?

1 Ответ

1 голос
/ 28 мая 2020

По умолчанию атрибут BindProperty поддерживает привязку значений свойств только в запросах POST. Вы должны согласиться на поддержку GET запросов:

[BindProperty(SupportsGet=true)]
public string Header { get; set; }

Ссылка: https://www.learnrazorpages.com/razor-pages/model-binding#binding -data-from-get-requests 1

1 ( У меня есть сайт Learn Razor Pages )

...