Может ли кто-нибудь объяснить мне, как работает привязка модели в ASP.NET?C#

Место общения программистов C#
Anonymous
Может ли кто-нибудь объяснить мне, как работает привязка модели в ASP.NET?

Сообщение Anonymous »

Я пытаюсь выполнить почтовый запрос из Reactjs в ASP.NET API, используя axios. Сначала я получил ошибку 400 Bad request. Но после того, как я изменил DTO в серверной части, все заработало, но полученные данные были пустыми или нулевыми (я думаю, это одна из тех ошибок привязки модели).
Это мой файл React.Js:

Код: Выделить всё

const defaultImgPath = '/assets/ImgStarter.jpg';
const initialFieldValues = {
productName: 'Fried spring rolls',
productPrice: 50000,
productStatus: 1,
productDescription: 'A short description',
imagePath: defaultImgPath,
imgName: '',
ProductImg: null
}

const ApiUploadImg = () => {
const [input, setInput] = useState(initialFieldValues)
const handleAddProduct = (e) => {
e.preventDefault();
axios.post('http://localhost:5273/api/product', input)
.then((response) => {
console.log(response);
})
.catch((error) => {
console.log(error.response);
})

return (








[img]{input.imagePath}
/>

Submit


)
}
Мой компонент Input.js:

Код: Выделить всё

const Input = ({ setInput, input, labelname, name, inputType, onChange=null}) => {
const [value, setValue] = useState('');

const onChangeHanlder = (e) => {
setInput({...input, [name]: e.target.value})
}
var id = {name};
return (


{labelname}: 



)
}
Моя функция API:

Код: Выделить всё

        [HttpPost]
public async Task Create([FromBody] CreateProductRequestDTO requestDTO)
{
if(!ModelState.IsValid)
{
return BadRequest(ModelState);
}
var productModel = requestDTO.ToProductsFromCreateDTO();
await _productRepo.CreateAsync(productModel);
return CreatedAtAction(nameof(GetById), new {id = productModel.Id}, productModel.ToProductDTO());
}
И главный герой, DTO, о котором я упоминал выше. Я действительно думал, что это будет последнее место, где может произойти ошибка, потому что я буквально копирую атрибут «name» из файла ReactJs, упомянутого выше, и создаю этот DTO (Решение (1)). Но это не сработало. Поэтому я вставляю атрибуты из класса Products, но, как я уже сказал, этот метод делает полученные данные пустыми (Решение (2))

Код: Выделить всё

    public class CreateProductRequestDTO
{
//Solution (1)
// public string? ProductName {get; set; } = string.Empty;
// public int ProductPrice {get; set; }
// public bool ProductStatus {get; set; }
// public string? ProductDescription {get; set; } = string.Empty;

//Solution (2)
public string Name {get; set; } = string.Empty;
public int Price {get; set; }
public bool Status {get; set; }
public string Description {get; set; } = string.Empty;
}
И если вам это нужно, объект «input» будет выглядеть точно так же, как «initialFieldValues»
Может кто-нибудь объяснить мне, что происходит?

Подробнее здесь: https://stackoverflow.com/questions/783 ... p-net-work

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