Связывание модели молча не удается при использовании страниц бритвы (HTTP 400)C#

Место общения программистов C#
Ответить
Anonymous
 Связывание модели молча не удается при использовании страниц бритвы (HTTP 400)

Сообщение Anonymous »

Я пытаюсь сделать полное приложение ASP.net Core с использованием страниц Razor, и я пытаюсь правильно отправить данные.@page
@model RogersPizza.Pages.OrderModel
@{
Layout = "Shared/_Layout.cshtml";
}
@section title {
Order
}
@section scripts {

}
@section siteMenu {



Rogers Pizza
Menu
Order
About
Contact
Employees



}

@section body {


Choose your pizza

@foreach(var item in Model?.Pizzas)
{

@item.Name
}










}
< /code>
Вот скрипт React внутри формы: < /p>
import React from 'react';
import { useState, useEffect } from 'react';
import { createRoot } from 'react-dom/client';

export default function PaymentOptions() {
const [paymentOption, setPaymentOption] = useState("cash");
const [giftCard, setGiftCard] = useState("");

useEffect(() => {
const paymentInput = document.getElementById('selectedPaymentOption');
const giftCardInput = document.getElementById('giftCardNumber');

if (paymentInput) {
paymentInput.value = paymentOption;
}
if (giftCardInput) {
if(paymentOption === "cash")
{
giftCardInput.value = "9999999999999999";
}
else if(paymentOption === "giftCard")
{
giftCardInput.value = giftCard || "";
}

}
}, [paymentOption, giftCard]);

const handlePaymentMethodChange = (e) => {
setPaymentOption(e.target.value);
};

const handleGiftCardChange = (e) => {
setGiftCard(e.target.value);
};

return (


Please select a payment method


Cash
Gift Card


{paymentOption === "cash" &&

Please have your cash ready when receiving your order.

}

{paymentOption === "giftCard" &&

Please enter your gift card number below.


}

);
}

const domNode = document.getElementById('payment-options');
if (domNode) {
const root = createRoot(domNode);
root.render(
);
}
< /code>
Вот страница модели: < /p>
using Microsoft.AspNetCore.Http.HttpResults;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.EntityFrameworkCore;
using RogersPizza.Models;

namespace RogersPizza.Pages
{
public class OrderModel : PageModel
{
private readonly RogersPizza.Data.StoreContext _context;
private readonly ILogger _logger;
[BindProperty] public Order? Order { get; set; }

public OrderModel(RogersPizza.Data.StoreContext context, ILogger logger)
{
_context = context;
_logger = logger;
}

public IList? Pizzas { get; set; }
public async Task OnGetAsync()
{
Pizzas = await _context.Pizzas.ToListAsync();
}

public IActionResult OnPost()
{
_logger.LogInformation("Received order: Pizza={Pizza}, Payment={PaymentOption}, GiftCard={GiftCardNumber}",
Order?.Pizza, Order?.PaymentOption, Order?.GiftCardNumber);
return RedirectToPage("/Index");
}

// private bool ValidateOrder(Order order)
// {
// return false;
// }
}
}
< /code>
Вот модель заказа, используемая при привязке формы: < /p>
namespace RogersPizza.Models
{
public class Order
{
public int? ID { get; set; }
public required string Pizza { get; set; }
public required string PaymentOption { get; set; }
public string? GiftCardNumber { get; set; }
}
}
< /code>
В настоящее время моя форма формы не выполняется при отправке формы на странице представления, и я получаю страницу сообщения об ошибке 400 при использовании Chrome с следующим сообщением в консоли: < /p>

Не удалось загрузить ресурс: сервер ответил со статусом 400 () < /p>
< /blockquote> . правильно?


Подробнее здесь: https://stackoverflow.com/questions/797 ... s-http-400
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»