在 Razor 页面中使用 ViewData - 为页面全局设置键

Working With ViewData in Razor Pages - set key globally for a page

有没有办法在页面上全局设置一个ViewData键? 在我的示例中,我必须在每个动词上设置它。

official documentation or this probably unofficial 但更好的 文档中我没有找到关于此事的任何信息。

[AllowAnonymous]
public class PasswordResetModel : PageModel {

    private readonly IConfiguration _configuration;
    private readonly ILogger<PasswordResetModel> _logger;
    private readonly IRecaptchaService _recaptchaService;
    private readonly RecaptchaOptions _recaptchaOptions;

    public PasswordResetModel(IConfiguration configuration, 
                              ILogger<PasswordResetModel> logger,
                              IRecaptchaService recaptchaService) {

        _configuration = configuration;
        _logger = logger;
        _recaptchaService = recaptchaService;
        _recaptchaOptions = new RecaptchaOptions();
        _configuration.Bind("reCAPTCHA", _recaptchaOptions);

        //ViewData["ping"] = "pong"; -- here is not possible
    }

    [BindProperty]
    public PasswordResetRequest passwordResetRequest { get; set; }

    public void OnGet() {
        ViewData["IsRecaptcaEnabledOnPasswordReset"] = _recaptchaOptions.IsRecaptcaEnabledOnPasswordReset;
    }

    public async Task<IActionResult> OnPostAsync() {
        ViewData["IsRecaptcaEnabledOnPasswordReset"] = _recaptchaOptions.IsRecaptcaEnabledOnPasswordReset;
        //code skipped intentionally 
    }
}

谢谢,

我建议使用 [ViewData] 属性:

https://www.learnrazorpages.com/razor-pages/viewdata#viewdata-attribute

这将使 属性 成为强类型并自动填充。我不确定 "IsRecaptcaEnabledOnPasswordReset" 是什么数据类型,但我假设以下字符串:

[ViewData]
public string IsRecaptcaEnabledOnPasswordReset { get; set; }

在您的 Razor 页面中,您将能够使用以下任一方式访问 属性:

@ViewData["IsRecaptcaEnabledOnPasswordReset"]
@Model.IsRecaptcaEnabledOnPasswordReset