خوب فرض کنید ما در razor page یک page داریم که یک سفارش ثبت میکند و بعد از اینکه سفارش ثبت شده می خواهیم کاربر را به یک صفحه دیگر هدایت و مشخصات سفارشی که داده را نشانش دهیم(در اینجا مثلا نام سفارش).
فرض می کنیم این page ثبت سفارش ماست:
public class IndexModel : PageModel { readonly IViewerOrderService _viewerOrderService; public IndexModel(IViewerOrderService viewerOrderService) { _viewerOrderService = viewerOrderService; } [PageRemote( AdditionalFields = "__RequestVerificationToken", HttpMethod = "post", PageHandler = "CheckValidations" )] [BindProperty] public Order Order { get; set; } public void OnGet() { } public async Task<IActionResult> OnPostAsync(CancellationToken cancelationToken) { if (!ModelState.IsValid) return Page(); await _viewerOrderService.AddOrder(Order, cancelationToken); return RedirectToPage("ThankYou", new {orderName = Order.Name}); } public JsonResult OnPostCheckValidations() { if (!ModelState.IsValid) return new JsonResult(false); return new JsonResult(true); } }
به OnPostAsync دقت کنید Order.Name با نام orderName (در route) را به همراه صفحه ThankYou-تشکر ، RedirectToPage میکند.
حالا ما در صفحه ThankYou باید این مقدار را دریافت کنیم:
public class ThankYouModel : PageModel { [BindProperty(Name = "orderName", SupportsGet = true)] public string Name { get; set; } public void OnGet() { } }
نکته ای که وجود دارد Name = "orderName", SupportsGet = true می باشد. حالا مقدار مورد نظر در پراپرتی Name بایند میشود به همین سادگی .
نکته تکمیلی: PageRemote و CheckValidations برای Remote Validation در Razorpages می باشد.
[PageRemote(AdditionalFields = "__RequestVerificationToken", HttpMethod = "post", PageHandler = "CheckValidations" )]
public JsonResult OnPostCheckValidations() { if (!ModelState.IsValid) return new JsonResult(false); return new JsonResult(true); }