Как получить доступ к нескольким представлениям для одного метода - PullRequest
0 голосов
/ 05 февраля 2019

я добавил два метода представления для редактирования: первый вызвал его (Edit), а второй вызвал его (Details). Я хочу получить доступ к каждому из этих двух представлений, один для редактирования, а другой для отображения деталей ... Есть ли способопределить необходимый вид внутри индексного представления?я знаю, что мы можем определить действие с помощью (asp-action). Есть ли что-то похожее для определения представления?

метод редактирования в контроллере

      [HttpPost]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> Edit(int id, [Bind("Id,EventNameAr,EventNameEn,EventType,CountryId,Venue,Date,SpecialityId,Organizers,ApplicationUserId,ContactDetails,IsFeatured,IsVisible,IsAccepted,Website,IsDecisionMaker,Description,EventDate,AridPrivileges,Image,ReportType")] ScientificEvent scientificEvent, IFormFile myfile)
        {
            if (id != scientificEvent.Id)
            {
                return NotFound();
            }

            if (ModelState.IsValid)
            {
                try
                {
                    scientificEvent.ApplicationUserId = _userManager.GetUserId(User);
                    scientificEvent.Image = await UserFile.UploadeNewImageAsync(scientificEvent.Image,
myfile, _environment.WebRootPath, Properties.Resources.ScintificEvent, 50, 50);

                    _context.Update(scientificEvent);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!ScientificEventExists(scientificEvent.Id))
                    {
                        return NotFound();
                    }
                    else
                    {
                        throw;
                    }
                }
                return RedirectToAction(nameof(Index));
            }
            ViewData["ApplicationUserId"] = new SelectList(_context.ApplicationUsers, "Id", "ArName", scientificEvent.ApplicationUserId);
            ViewData["CountryId"] = new SelectList(_context.Countries, "Id", "ArCountryName", scientificEvent.CountryId);
            ViewData["SpecialityId"] = new SelectList(_context.Specialities, "Id", "ArSpecialityName", scientificEvent.SpecialityId);

            return View(scientificEvent);
        }

индексное представление: где я хочу определить, какоепосмотреть я хочу получить доступ

   @foreach (var item in Model)
    {
        @if (item.IsFeatured == true)
        {
            @if (item.Image != "")
            {
                <img class="img-rounded" src="@Url.Content("~/" + @ARID.Properties.Resources.ScintificEvent + "/" + item.Image)" width="380" height="200" />
            }
            <dl class="dl-horizontal">
                <dt>
                    @Html.DisplayNameFor(model => item.EventNameAr)
                </dt>
                <dd>
                    <a asp-action="Edite" asp-route-id="@item.Id">  @Html.DisplayFor(modelItem => item.EventNameAr)</a>
                </dd>
                <dt>
                    @Html.DisplayNameFor(model => item.Speciality)
                </dt>
                <dd>
                    @Html.DisplayFor(model => item.Speciality.ArSpecialityName)
                </dd>
                <dt>
                    @Html.DisplayNameFor(model => item.ApplicationUser)
                </dt>
                <dd>
                    <a asp-action="Details" asp-controller="ApplicationUsers" asp-route-id="@item.ApplicationUser.Id">
                        @Html.DisplayFor(model => item.ApplicationUser.ArName)
                    </a>
                    <img class="img-rounded" src="@Url.Content("~/" + @ARID.Properties.Resources.ProfileImageFolder + "/" + item.ApplicationUser.ProfileImage)" width="50" height="50" /><br />
                </dd>
                <dt>
                    @Html.DisplayNameFor(model => item.EventType)
                </dt>
                <dd>
                    @Html.DisplayFor(model => item.EventType)
                </dd>
            </dl>
            <hr style=" border-top:3px solid #275bad;">
        }
    }

1 Ответ

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

если я правильно понимаю, из 1 метода вы хотите вернуть объект в 2 различных представления в зависимости от некоторой логики, поэтому вы можете просто использовать return View(scientificEvent,"Your view name");

...