Передача соответствующих данных из одного вида в другой по ссылке в mvc - PullRequest
0 голосов
/ 20 февраля 2019

Я застрял с тем, как передавать данные из одного представления в другое.У меня есть представление с именем "Session", которое отображает данные из базы данных через цикл foreach в табличном формате.В каждой строке есть ссылка «Добавить стажера».по его щелчку он направляет в другой вид.Мне нужно получить все детали из строки ссылки, чтобы они отображались в перенаправленном виде.

Я не имею ни малейшего представления о том, как его реализовать, ни пример кода.

Пожалуйста, помогите мнес этим.

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

В вашем случае вы должны использовать строку запроса <a href="/add-trainee?sessionid=123">Add trainee</a> Добавить стажера

, в то время как / add-trainee route к вашему методу TraineeController AddTrainee

Я добавляю пример кода

namespace WebApplication1.Controllers
{
    public class Session
    {
        public int SessionId { get; set; }
        public string Name { get; set; }
        public List<Trainee> Trainees { get; set; }
    }

    public class Trainee
    {
        public int TraineeId { get; set; }
        public string Name { get; set; }

    }

    public class SessionController : Controller
    {
        // GET: Session
        public ActionResult Index()
        {
            List<Session> sessions = new List<Session>();
            sessions.Add(new Session { SessionId = 1, Name = "Session 1"});
            sessions.Add(new Session { SessionId = 1, Name = "Session 2" });
            sessions.Add(new Session { SessionId = 1, Name = "Session 3" });
            return View(sessions);
        }  
    }
}


namespace WebApplication1.Controllers
{
    public class TraineeController : Controller
    {
        public ActionResult Add(int sessionid)
        {
            List<Session> sessions = new List<Session>();
            sessions.Add(new Session { SessionId = 1, Name = "Session 1" });
            sessions.Add(new Session { SessionId = 1, Name = "Session 2" });
            sessions.Add(new Session { SessionId = 1, Name = "Session 3" });
            var session = sessions.FirstOrDefault(c => c.SessionId == sessionid);
            ViewBag.session = session;
            return View();
        }


        [HttpPost]
        public ActionResult Create(FormCollection collection)
        {
            try
            {
                // TODO: Add insert logic here

                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }


    }
}

Индекс сеанса (Index.cshtml)

@model IEnumerable<WebApplication1.Controllers.Session>

@{
    ViewBag.Title = "List Sessions";
}

<table>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Name)
        </td>
        <td>
           <a href="/trainee/add?sessionid=@item.SessionId">Add Trainee</a>
        </td>
    </tr>
}

</table>

Добавить представление обучаемого (Add.cshtml)

@model WebApplication1.Controllers.Trainee

@{
    var session = ViewBag.session;
}

@using (Html.BeginForm()) 
{
    @Html.AntiForgeryToken()

    <div class="form-horizontal">
        <h4>Add Trainee</h4>
        <hr />

        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        <div class="form-group">
            <label class="control-label col-md-2" for="Name">Session Name</label>
            <div class="col-md-10">@session.Name</div>
        </div>
        <div class="form-group">
            @Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </div>
    </div>
}
0 голосов
/ 20 февраля 2019

На самом деле есть несколько способов сделать это.

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