Asp.Net.Core MVC извлекает данные из представления в другое представление - PullRequest
0 голосов
/ 12 июня 2019

Я сейчас делаю asp.net.core с моделью MVC в моем проекте. Я хочу создать другую форму для извлечения данных из исходной формы.

В моем проекте пользователь выберет элемент из списка продуктов, затем перейдет от представления (product.view) к другому представлению (order.view). Хотя я хочу передать значения (имя, описание, цвет, цена, тип) из представления продукта в представление заказа.

Это мой Order.model

namespace FurnitureStore.Models
{
    public class Order
    {
        public int OrderID { get; set; }
        public string FurnitureName { get; set; }
        public string FurnitureDescription { get; set; }
        public string FurnitureType { get; set; }
        public string FurnitureColour { get; set; }
        public decimal FurniturePrice { get; set; }

        public string CustomerName { get; set; }
        public string CustomerContact { get; set; }
        public string CustomerAddress { get; set; }
    }
}

Это моя оригинальная модель

namespace FurnitureStore.Models
{
    public class Furniture
    {
        public int ID { get; set; }
        public string FurnitureName { get; set; }
        public string FurnitureDescription { get; set; }
        public string FurnitureType { get; set; }
        public string FurnitureColour { get; set; }
        public decimal FurniturePrice { get; set; }
    }
}

Кнопка-действие в первом представлении для Order.View

<a asp-controller="Orders" asp-action="Buy">Buy</a>

Order.View

<div class="form-group">
     <label asp-for="FurnitureName" class="control-label"></label>
     <input asp-for="FurnitureName" class="form-control" />
     <span asp-validation-for="FurnitureName" class="text-danger"></span>
</div>
//Repeated form-group
<input type="submit" value="Create" class="btn btn-default" />

Order.Controller

   public ActionResult Buy()
    {

        return View();
    }


    [HttpPost]
    public ActionResult Buy([Bind("OrderID,FurnitureName,FurnitureDescription,FurnitureType,FurnitureColour,FurniturePrice,CustomerName,CustomerContact,CustomerAddress")] Order order)
    {
        if (ModelState.IsValid)
        {
            _context.Add(order);
            _context.SaveChanges();
        }
        return View();
    }

1 Ответ

0 голосов
/ 12 июня 2019

Для этого случая вам нужно использовать форму тега в вашем представлении продукта, это выглядит примерно так:

[HttpPost]
    public ActionResult Buy(Order order)
    {
        if (ModelState.IsValid)
        {
            _context.Add(order);
            _context.SaveChanges();
        }
        return View();
    }

в вашем продукте

<form method="post" asp-area="" asp-controller="Orders" asp-action="Buy">
        <input name="yourFieldName" type="text">
        <input name="yourFieldName" type="text">
        <input name="yourFieldName" type="text">
        <input name="yourFieldName" type="text">
        <button type="submit">Submit</button>
</form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...