@ Html.ActionLink может отправлять с идентификатором и видеть идентификатор в другом представлении - PullRequest
0 голосов
/ 23 июня 2018

Я хочу перейти на этот адрес. В проекте мы сначала создаем опрос. затем нажмите эту кнопку рядом с опросом, чтобы просмотреть его вопросы.

Список опроса. И "Soruları Gör" - это та кнопка.

Когда кнопка нажата, мы переходим на страницу индекса другого контроллера. Как это, Индексная страница вопросов опроса. Нажмите на кнопку в поле, чтобы добавить новый вопрос в опрос.

Я хочу отправить идентификатор опроса на страницу нового вопроса и показать его на этой странице. страница создания нового вопроса

Я хочу, чтобы идентификатор опроса отображался в красной рамке на рисунке 3.

This view belongs to the 2nd picture. 

@model IEnumerable<PerformansTakipAnket.Models.View_Base_UyeAnketSorular_Getir>

        @{
            ViewBag.Title = "Index";
        }

        <h2>Index</h2>

        <p>

            @Html.ActionLink("Yeni Soru", "Create")

        </p>
        <table class="table">
            <tr>
                <th>
                    @Html.DisplayNameFor(model => model.UyeAnketID)
                </th>
                <th>
                    @Html.DisplayNameFor(model => model.uyeAnketSoruID)
                </th>
                <th>
                    @Html.DisplayNameFor(model => model.UyeAnketSoruTip)
                </th>
                <th>
                    @Html.DisplayNameFor(model => model.UyeAnketSoruUstID)
                </th>
                <th>
                    @Html.DisplayNameFor(model => model.uyeAnketSoruBaslik)
                </th>
                <th></th>
            </tr>

        @foreach (var item in Model) {
            <tr>
                <td>
                    @Html.DisplayFor(modelItem => item.UyeAnketID)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.uyeAnketSoruID)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.UyeAnketSoruTip)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.UyeAnketSoruUstID)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.uyeAnketSoruBaslik)
                </td>
                <td>
                    @Html.ActionLink("Cevapları Gör", "Index", "Cevap", new { id = item.uyeAnketSoruID }, null) |
                    @Html.ActionLink("Details", "Details", new { id = item.uyeAnketSoruID }) |
                    @Html.ActionLink("Delete", "Delete", new { id = item.uyeAnketSoruID })


                </td>
            </tr>
        }

        </table>

public ActionResult Index(int id)
        {
            var sorular = db.View_Base_UyeAnketSorular_Getir.Where(i => i.UyeAnketID == id);
            ViewBag.UyeAnketID = id;

            return View(sorular.ToList());
        }

// GET: Soru/Create
        public ActionResult Create(int id)
        {


            @ViewBag.UyeAnketID = id;


            return View();
        }

        // POST: Soru/Create

        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create([Bind(Include = "uyeAnketSoruID,UyeAnketID,UyeAnketSoruTip,UyeAnketSoruUstID,uyeAnketSoruBaslik")] View_Base_UyeAnketSorular_Getir view_Base_UyeAnketSorular_Getir)
        {
            if (ModelState.IsValid)
            {

                db.Proc_UyeAnketSorular_EkleGuncelleSil("YeniKayit", view_Base_UyeAnketSorular_Getir.uyeAnketSoruID, view_Base_UyeAnketSorular_Getir.UyeAnketID, view_Base_UyeAnketSorular_Getir.UyeAnketSoruTip, view_Base_UyeAnketSorular_Getir.UyeAnketSoruUstID, view_Base_UyeAnketSorular_Getir.uyeAnketSoruBaslik);
                db.SaveChanges();
                return RedirectToAction("Index", new { @id = view_Base_UyeAnketSorular_Getir.UyeAnketID });
            }

            return View(view_Base_UyeAnketSorular_Getir);
        }

Я надеюсь, что смогу рассказать вам о проблеме.

1 Ответ

0 голосов
/ 23 июня 2018

Вы должны передать SurveyId из метода действия в представление списка вопросов и использовать его при отображении ссылки «создать», чтобы добавить surveyId в качестве строки запроса.

Похоже, у вас нет модели представления, в этом случае вы можете использовать ViewBag для передачи этих данных.

public ActionResult Index(int id)
{ 
   var questions = db.Questions.Where(a=>a.SurveyId==id).ToList();
   ViewBag.SurveyId = id;
   return View(questions);
}

Теперь, по вашему мнению, вы можете использовать это значение элемента ViewBag для заполнения параметра RouteValueDictionary для вашего ActionLink вспомогательного метода.

@Html.ActionLink("Yeni Soru", "Create",new { surveyId= ViewBag.SurveyId })

Предполагая, что у вашего Create метода действия есть параметр с именем surveyId

public ActionResult Create(int surveyId)
{
  // Use surveyId as needed ( Pass to view via ViewBag/ViewModel)
  // to do :return something
}

Я также предлагаю просматривать модели представлений вместо передачи данных через ViewBag / ViewData. Это более чистый подход ИМХО.

...