userList viewbag.iから値を取得しようとしていますが、解決策を見つけることができません。エラーは次のとおりです。ViewBag.userListは は、Viewbag mvcからforeachで値を取得できません。
@foreach (var aUser in ViewBag.userList)
{
<tr>
<td>@aUser.name</td>
<td>@aUser.username</td>
.....
<td>@Html.ActionLink("Edit", "UserEdit","Users")</td>
<td>@Html.ActionLink("Delete", "UserDelete", "Users")</td>
</tr>
}
をデバッグしながら、私はスーパークラスとchildclass
スーパークラスを持って見ることができるデータ(2オブジェクト)を含んで
An exception of type 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException' occurred in System.Core.dll but was not handled in user code
Additional information: 'object' does not contain a definition for 'name'
かかわら
public partial class user
{
public int id { get; set; }
public string name { get; set; }
public string username { get; set; }
...
public string user_role { get; set; }
}
子クラス
public class UserSub: user
{
public string CreatedUserName { get; set; }
public string ModifiedUserName { get; set; }
}
私のコントローラでは、私はlinqを使ってデータベースから値を取得し、それをViewbag.userListに保存しました。私のコントローラ機能は
public ActionResult UserList()
{
IEnumerable<user> users = null;
users = dbEntities.users.ToList();
if (users != null)
{
var userLists = (from a in users join b in users on a.created_user_id equals b.id select new { a.name, a.username, a.password, a.user_role, a.is_enable, a.is_approved, CreatedUserName = b.name, a.create_time, a.is_android, a.device_id }).ToList();
ViewBag.userList = userLists;
}
return View();
}
は、ビューとコントローラの間でデータを共有するためにのViewModelを使用して、あまりにも
'ViewBag.userList'は匿名オブジェクトのコレクションなので、データをモデルに投影する必要があります(プロパティ 'name'、' username'、 'password'などを含みます)。 'ViewBag'を使用しないでください - モデルをビューに渡してください) –
はキャストしようとしましたが、エラーもあります –
なぜモデルに' return View(userLists); ViewBag – Vijai