Как просмотреть данные из другой таблицы и вставить данные в другую таблицу с одной страницы просмотра, используя Asp. net core MVC? - PullRequest
0 голосов
/ 06 февраля 2020

Сценарий

Я собираюсь создать простой интерфейс для вставки пожертвований от студентов, используя Asp. net Core MVC и EF. Согласно приложению, перед вводом пожертвования я должен отобразить информацию о студенте (из таблицы «Студент»), используя номер приема (Add_No). Затем я должен вставить данные пожертвования, используя то же представление, но с помощью другой кнопки отправки в таблицу Welfare.

Проблема:

Я попробовал это следующим образом, как показано в моих блоках кода. Вставка прошла успешно. Но я не смог отобразить информацию об ученике на экране, хотя я их получаю.

Код для View.cs html

@model Student_Management.Models.Welfare

@{
    ViewData["Title"] = "Wcreate";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h4 align="center">Welfare Donation Entry Form</h4>

<hr />
<table>
    <tr>
        <td>
            @using (Html.BeginForm("getStudentInfo", "Payments", FormMethod.Post))
            {
                <div class="form-group">
                    <label asp-for="Add_No" class="control-label"></label>
                    <input asp-for="Add_No" class="form-control" id="t1" name="A" />
                    <span asp-validation-for="Add_No" class="text-danger"></span>
                </div>

                <div class="form-group">
                    <input type="submit" value="getStudentInfo" class="btn btn-primary" id="btngetStudentInfo" />
                </div>
            }
        </td>
        <td>
            <ul>
                @if (ViewBag.students != null)
                {
                    @foreach (var std in ViewBag.students)
                    {
                        <li>
                            @std
                        </li>
                    }
                }
            </ul>
        </td>
    </tr>
</table>

Код для контроллера

 public class PaymentsController : Controller
    {
        private readonly ConnectionString _context;

        public PaymentsController(ConnectionString context)
        {
            _context = context;
        }
 public IActionResult Wcreate(Welfare welfare, string A)
        {
            int maxR_No = _context.Welfare.Max(p => p.R_No);
            maxR_No = maxR_No + 1;
            welfare.R_No = maxR_No;

            if (ModelState.IsValid)
            {

                _context.Add(welfare);
                _context.SaveChanges();
                ModelState.Clear();
            }
            return View();
        }
 public ActionResult getStudentInfo(string A)
        {
            var items = _context.Students.Where(x => x.Add_No == A)
              .Select(x => new
              {
                  P1 = x.F_Name,
                  P2 = x.Class + "-" + x.ClassNo
              });//.ToList();

            ViewData["students"] = items;
            return RedirectToAction("Wcreate");
        }

namespace Student_Management.Models
{
    public class Welfare
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int R_No { get; set; }
        [Required]
        public string Add_No { get; set; }
        [Required]
        public string Grade { get; set; }
        [Required]
        public string STClassNo { get; set; }
        [Required]
        public string Month { get; set; }
        [Required]
        public string Year { get; set; }
        [Required]
        public string Rs { get; set; }
        [Required]
        [DataType(DataType.Date)]
        public DateTime Date { get; set; }
        public string cmt { get; set; }

1 Ответ

0 голосов
/ 08 февраля 2020

Как подсказал Jasen, я изменил свой метод действия и просмотр следующим образом.

<td>
            @using (Html.BeginForm("getStudentInfo", "Payments", FormMethod.Post))
            {
                <div class="form-group">
                    <label asp-for="Add_No" class="control-label"></label>
                    <input asp-for="Add_No" class="form-control" id="t1" name="A" />
                    <span asp-validation-for="Add_No" class="text-danger"></span>
                </div>

                <div class="form-group">
                    <input type="submit" value="getStudentInfo" class="btn btn-primary" id="btngetStudentInfo" />
                </div>
            }
        </td>
        <p>@TempData["info"]</p>
        <p>@(TempData["info2"] +"-" + TempData["info3"])</p>

Метод действия

 public ActionResult getStudentInfo(string A)
        {
            var items = _context.Students.Where(x => x.Add_No == A)
              .Select(x => new
              {
                  P1 = x.F_Name,
                  P2 = x.Class,
                  p3=x.ClassNo
              }).ToList();
            TempData["info"] = items[0].P1; 
TempData["info2"] = items[0].P2; 
TempData["info3"] = items[0].p3;
            return RedirectToAction("Wcreate");
        }

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