Передать параметр не в классе модели для процедуры хранения в контроллере mvc ядро ​​3 - PullRequest
0 голосов
/ 30 апреля 2020

Я создаю страницу билетов и хочу, чтобы пользователь добавил билеты каждому ученику. Добавление заявок выполняется в базе данных с помощью хранимой процедуры, которая принимает параметры из класса модели и таблицы базы данных, такие как имя, возраст и номер, которых нет в базе данных и модели. Проблема заключается в передаче параметра Number, который отсутствует в таблице базы данных и отсутствует в классе модели, поскольку система будет создавать заявки в соответствии с параметром Number.

Класс модели:

 public class Ticket
{
    [Key]
    public Int64 ID { get; set; }

    public Sring Name { get; set; }

    public  int Age { get; set; }

    public Sring Address { get; set; }

    [BindProperty]
    public int Number{ get; set; }



    }

Обратите внимание, что я добавил число в качестве свойства Bind в качестве этого решения: Передача данных из представления в контроллер asp. net страниц с базовой бритвой

Функция создания, которая должна принимать число из пользователь в контроллере

public IActionResult Create()
    {
        return View();
    }

    [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> Create([Bind("ID,Name,Age,Address,Number")] Ticket ticket)
    {


        if (ModelState.IsValid)
        {
            var Number = new SqlParameter
            {
                ParameterName = "@Number",
                SqlDbType = System.Data.SqlDbType.Int,
                Direction = System.Data.ParameterDirection.Input,
                Value = ticket.Number
            }; 
            var Name = new SqlParameter
            {
                ParameterName = "@Name",
                SqlDbType = System.Data.SqlDbType.NVarChar,
                Direction = System.Data.ParameterDirection.Input,
                Value = ticket.Name
            };
            var Age = new SqlParameter
            {
                ParameterName = "@Age",
                SqlDbType = System.Data.SqlDbType.Int,
                Direction = System.Data.ParameterDirection.Input,
                Value = ticket.Age
            };
            _context.Database.ExecuteSqlRaw("usp_InsertTickets  @Number,@Name,@Age", Number, Name,Age);
            await _context.SaveChangesAsync();
            return RedirectToAction(nameof(Index));
        }
        return View(ticket);
    }

Страница просмотра

 <h4>Ticket</h4>
<hr />
<div class="row">

    <div class="col-md-4">
        <form asp-action="Create">

            <div class="form-group">
                <label asp-for="Number" class="control-label"></label>
                <input asp-for="Number" class="form-control" />
                <span asp-validation-for="Number" class="text-danger"></span>
            </div>

            <div class="form-group">
                <label asp-for="Name" class="control-label"></label>
                <input asp-for="Name" class="form-control" />
                <span asp-validation-for="Name" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="Age" class="control-label"></label>
                <input asp-for="Age" class="form-control" />
                <span asp-validation-for="Age" class="text-danger"></span>
            </div>

            <div class="form-group">
                <input type="submit" value="Create" class="btn btn-primary" />
            </div>
        </form>
    </div>
</div>

, и это хранимая процедура:

    Create PROCEDURE [dbo].[usp_InsertTickets]
    @Number         int 
    , @Name nvarchar(50)
    , @Age      int
AS
BEGIN
  SET NONumber ON;

    Declare @index int;
    set @index = 0;


    while @index < @Number
    begin
        INSERT INTO [dbo].[ut_Ticketing]
               ([Age]
               ,[Name]
               )
         VALUES
               ( @Age
                , @Name
               )

        set @index = @index +1;
    end


  RETURN 0
END

Я также следовал этому решению: Как передать значение из вида в контроллер 1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...