Как взять данные из представления и отправить их в действие контроллера? ASP. NET Ядро MVC - PullRequest
0 голосов
/ 07 мая 2020

У меня есть представление, в котором я отображал все записи из таблицы Requests. У каждой записи есть кнопка сохранения и удаления, поэтому пользователь может добавить или удалить запрос в / из таблицы ReqHistory.

Как я могу получить данные (идентификатор, заголовок, описание .et c) каждой записи из представления запроса и передать их моим действиям добавления / удаления в ReqHistoryController?

Когда я отправляю форму, она не берет данные записи из представления.

Кто-нибудь может мне помочь?

image

Вот два действия из ReqHistoryController:

public async Task<IActionResult> AddReqToHistory([Bind("ID, Title,Description,ImagePath")] Request model)
{
    var currentUser = await _userManager.GetUserAsync(User);
    var userId = await _userManager.GetUserIdAsync(currentUser);

    var newReqHistory = new ReqHistory()
        {
                UserId = userId,
                RequestId = model.ID,
                Title = model.Title,
                Description = model.Description,
                CategoryID = model.CategoryID,
                PersonID = model.PersonID,
                ImagePath = model.ImagePath
        };

    _context.Add(newReqHistory);
    await _context.SaveChangesAsync();
    return RedirectToAction("Index", "Requests");
}

// POST
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> EliminateReqFromHistory(int requestId)
{
    var reqHistory = await _context.ReqHistory.FindAsync(_userManager.GetUserId(User), requestId); //ReqHistory has a composite PK
    _context.ReqHistory.Remove(reqHistory);
    await _context.SaveChangesAsync();

    return RedirectToAction("Index", "Requests");
}

ReqHistory класс модели:

public class ReqHistory
{
    [Key]
    public string UserId { get; set; }

    [Key]
    public int RequestId { get; set; }
    public ICollection<Request> Requests { get; set; }  //1-M relationship

    public string Title { get; set; }
    public string Description { get; set; }
    public string ImagePath { get; set; }

    //one-to-one relationship
    public int CategoryID { get; set; }
    public Category Category { get; set; }

    public int PersonID { get; set; } //FK
    public Person Person { get; set; } //nav property
}

Вот вид ReqHistory :

@model IEnumerable<App.Models.ReqHistory>

<table class="table table-condensed table-bordered">

        <tr>
            <th>
                @Html.DisplayNameFor(model => model.RequestId)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.UserId)
            </th>
         ...........................
        </tr>
        @foreach (var item in Model)
        {
            <tr>
                <td>
                    @item.RequestId
                </td>
                <td>
                    @item.UserId
                </td>
                ..................
            </tr>

        }
    </table>

1 Ответ

0 голосов
/ 08 мая 2020
        <a asp-action="AddReqToHistory" asp-controller="ReqHistory" type="submit" value="Save" asp-route-HEREID="@model.ID" />
        <a asp-action="EliminateReqFromHistory" asp-controller="ReqHistory" type="submit" value="Eliminate" asp-route-HEREID="@model.ID" />

вы можете передать id через asp -маршрут методом url.

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