Я пытаюсь сделать полное приложение 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
Связывание модели молча не удается при использовании страниц бритвы (HTTP 400) ⇐ C#
Место общения программистов C#
1754453913
Anonymous
Я пытаюсь сделать полное приложение ASP.net Core с использованием страниц Razor, и я пытаюсь правильно отправить данные.@page
@model RogersPizza.Pages.OrderModel
@{
Layout = "Shared/_Layout.cshtml";
}
@section title {
Order
}
@section scripts {
}
@section siteMenu {
[url=Index]Rogers Pizza[/url]
[url=Menu]Menu[/url]
Order
[url=About]About[/url]
[url=Contact]Contact[/url]
[url=Employees]Employees[/url]
}
@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> . правильно?
Подробнее здесь: [url]https://stackoverflow.com/questions/79726638/model-binding-fails-silently-when-using-razor-pages-http-400[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия