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

Мой PartialsController.cs

public PartialViewResult _GridView()
    {

        var currentUser = UserManager.FindById(User.Identity.GetUserId());
        var ranks = ApplicationDbContext.Ranks.ToList();

        foreach (var item in ranks)
        {
            if (currentUser.ReputationPoints > item.ReputationPoints && currentUser.ReputationPoints < item.PointsToAdvance)
            {
                currentUser.UserRankId = item.Id;
                ApplicationDbContext.Entry(currentUser).State = EntityState.Modified;
                ApplicationDbContext.SaveChanges();
            }
        }
        var Rank = ApplicationDbContext.Ranks.SingleOrDefault(c => c.Id == currentUser.UserRankId);



        return PartialView(currentUser);
    }

И мой частичный вид под названием _GridView.cshtml

@model Destiny.Models.ApplicationUser
@using Microsoft.AspNet.Identity
@if (Request.IsAuthenticated)
{
using (Html.BeginForm("LogOff", "Account", FormMethod.Post, new { id = "logoutForm", @class = "navbar-right" }))
{
    @Html.AntiForgeryToken()

    <ul class="nav navbar-nav navbar-right">
        <li>
            @Html.ActionLink("Zalogowano jako " + Model.CurrentUser.Gamertag, "Index", "Manage", routeValues: null, htmlAttributes: new { title = "Manage" })
        </li>
        <li><a href="javascript:document.getElementById('logoutForm').submit()">Wyloguj</a></li>
    </ul>
}
  }
  else
          {
<ul class="nav navbar-nav navbar-right">
    <li>@Html.ActionLink("Zarejestruj", "Register", "Account",routeValues: null, htmlAttributes: new { id = "registerLink" })</li>
    <li>@Html.ActionLink("Zaloguj", "Login", "Account", routeValues: null, htmlAttributes: new { id = "loginLink" })</li>
</ul>
 }

PartialView требует другой ViewModel (который, кстати, используется для моего Home / Index), и дело в том, что я на 100% уверен, что я сделал что-то не так с передачей данных, но я не знаю, что это такое. . Это мой первый раз, когда я возился с частичными представлениями.

1
Jan Paweł Niepsuj 19 Июл 2017 в 15:04
Какую ошибку вы видите? Как вы визуализируете частичный вид? Вы отлаживали код /
 – 
Chetan
19 Июл 2017 в 15:07
Ошибка говорит о том, что данные, переданные в контроллер, - это PostList (моя модель представления), но для представления требуется ApplicationUser. Частичное представление было отрисовано таким образом @ Html.Partial ("~ / Views / Partials / _GridView.cshtml") И это находится в _Layout.cshtml, который я не передал ни одной модели, тем не менее
 – 
Jan Paweł Niepsuj
19 Июл 2017 в 15:10
Какой тип объекта currentUser ??
 – 
Mohammed Elshennawy
19 Июл 2017 в 15:10
Это ApplicationUser
 – 
Jan Paweł Niepsuj
19 Июл 2017 в 15:11
imgur.com/a/5ZjRe В нем говорится, что модель, переданная в словарь, является типом Destiny.Models.PostList , между тем словарь требует модель Destiny.Models.ApplicationUser. Как видите, я передал ApplicationUser контроллеру. Я подозреваю, что контроллер вообще не работает с этой партией.
 – 
Jan Paweł Niepsuj
19 Июл 2017 в 15:15

1 ответ

Лучший ответ

Использовать

   @Html.RenderAction 

Вместо того

   @Html.Partial( in the layout –

Сюда

 @{Html.RenderAction("_GridView");}
2
Mohammed Elshennawy 19 Июл 2017 в 15:23