Я новичок в C# MVC, поэтому, пожалуйста, будьте терпеливы. У меня возникли проблемы с отображением вывода для ViewBag. Приложение является веб-страницей фэнтезийного футбола, поэтому у меня есть три таблицы (прямо сейчас, еще впереди), один для основной информации о игроке (dbo.Player), один для фона игрока (dbo.PlayerBackground), а один - это таблица определений для команда (dbo.Team).C# MVC Ошибка ViewBag
На одной из моих страниц у меня есть поиск по имени и поиск по положению и вы хотите вернуть информацию через эти три таблицы.
public ActionResult Index()
{
var players = (from p in db.Players
join pb in db.PlayerBackgrounds on p.playerId equals pb.playerID
join t in db.Teams on p.teamAbbre equals t.teamAbbre
select new { playerID = p.playerId, playerName = p.name, position = p.position,
height = pb.height, weight = pb.weight, college = pb.college, dob = pb.dob,
imageUrl = pb.imageUrl, years = pb.years,
teamName = t.name
}).ToList();
ViewBag.data = players;
return View();
}
Запрос работает нормально, но в index.cshtml Я продолжаю получать ошибки.
@foreach (var player in ViewBag.data)
{
<tr class="success ui-dragable playerRow" style="display: none;">
<td>
<input type="checkbox" />
</td>
<td>
@Html.ActionLink((string)player.playerName, "Details", new { id = player.playerID }, new { @class = "detailsLink" })
</td>
<td>
@player.teamName
</td>
<td>
@player.position
</td>....
Из исследования, которое я сделал, похоже, что он должен работать. Я пробовал это как с, так и без (струнного) перевода. Без актерского это дает мне красной волнистой говорят, что я должен бросить и когда я делаю я получаю:
Сведения об исключении: Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: «объект» не содержит определения для «Playername»
Как я могу пройти, я могу наблюдать за игроком, и он имеет различные свойства так, как должен. Любая идея, что я делаю неправильно?
Благодарности Атину , Я тоже нашел этот пост, http://stackoverflow.com/questions/5207382/get-data-from-two-tablesjoin-with-linq-and-return-result-into-view, что очень помогло. Я изначально использовал viewmodel, но столкнулся с проблемами, которые заставили sql работать хорошо. Я до сих пор не понимаю, почему мой код не работал, потому что я точно следил за тем, что сделали другие плакаты. Хорошо, viewmodel - это путь. – nurdyguy