1

私のコンテキストは次のとおりです。

public class RegistrationManagerContext : DbContext
{
    public DbSet<User> Users { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<User>()                
            .ToTable("aspnet_Users");
    }
}

私のUserクラスは次のとおりです。

[Table("aspnet_Users")]
public class User
{
    [Key]
    [Display(AutoGenerateField = true)]
    [Required]
    public Guid UserId { get; set; }

    [DataType("nvarchar")]
    [MaxLength(256)]
    [Required]
    public string UserName { get; set; }

    [DisplayFormat(ApplyFormatInEditMode = true, ConvertEmptyStringToNull = true, DataFormatString = "{0:d}")]
    [Required]
    public DateTime LastActivityDate { get; set; }

    [NotMapped]
    public AccountProfile Profile
    { 
        get 
        { 
            if (_profile == null)
            {
                _profile = AccountProfile.GetUserProfile(this.UserName);
            }
            return _profile;
        }
    }
    private AccountProfile _profile = null;
}

私の呼び出しメソッド(コントローラー)は次のとおりです。

namespace RegistrationManager.Controllers
{

    [Authorize(Roles="Admins")]
    public class AdminController : Controller
    {

        private RegistrationManagerContext db = new RegistrationManagerContext();

        //
        // GET: /Admin/

        public ActionResult Index(int? id)
        {
            var viewModel = db.Users;
            if (id.HasValue)
            {
                ViewBag.UserID = id.Value;
            }
            return View(viewModel);
        }

    }
}

私の見解は:

@model IEnumerable<RegistrationManager.Models.User>

@{
        ViewBag.Title = "Users";
}

<h2>Users</h2>


<table>
    <tr>
        <th>Email Address</th>
        <th>Given Names</th>
        <th>Surname</th>
        <th>Last Ac</th>
        <th>Refresh</th>
    </tr>

@foreach (var item in Model)
{
    string selectedRow = "";
    if (ViewBag.UserId != null && item.UserId == ViewBag.UserId)  
    {  
        selectedRow = "selectedrow";  
    }  
    <tr class="@selectedRow" valign="top">
        <td>
            @item.UserName
        </td>
        <td>
            @item.Profile.GivenNames
        </td>
        <td>
            @item.Profile.Surname
        </td>
        <td>
            @String.Format("{0:d}", item.LastActivityDate)
        </td>
        <td>
            @Html.ActionLink("Refresh", "Refresh", "Admin", new { id = item.UserId }) 
        </td>
    </tr>
}
</table>

それで、私は何を間違っているのですか、それとも何が欠けているのですか?データがないので!!?? 少なくとも自分のログインを見る必要があるので、間違いなくデータがありますよね!?

4

1 に答える 1

1

あなたはこのようなことをしているべきではありません:

    public ActionResult Index(Guid? id)
    {
        if (id.HasValue)
        {
            var viewModel = db.Users.Where(x=>x.UserId == id.Value).FirstOrDefault();
            //ViewBag.UserID = id.Value; //You do not need it here
            if(viewModel != null)
                  return View(viewModel);
        }
        return RedirectToAction("UsersListPage");
    }

更新#1

コントローラ:

    public ViewResult Index(){
           return View(db.Users.ToList());
    }

意見:

    @model IEnumerable<YourNamespace.User>

    @foreach (var user in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => user.UserName)
        </td>            
    </tr>
     }

これはあなたのために働いていませんか?

于 2012-12-13T07:33:31.257 に答える