无法使用敲除绑定从数据库访问图像

时间:2015-11-08 09:09:03

标签: asp.net-mvc linq knockout.js asp.net-identity

这是我在挖掘视图模型的帮助下绑定图像的代码:

<img data-bind="attr: { src: PostedByAvatar }">
<p><a data-bind="text: PostedByName"></a>: 
<span data-bind=" html: Message"></span></p>

这是我的GetPosts方法,用于在淘汰视图模型的帮助下获取帖子以显示在视图页面上:

public JsonResult GetPosts()
{
    var ret = (from post in db.Posts.ToList()
               orderby post.PostedDate descending
               select new
               {
                   Message = post.Message,
                   PostedBy = post.PostedBy,
                   PostedByName = post.ApplicationUser.UserName,
                   PostedByAvatar = db.Files.SingleOrDefault(s => s.ApplicationUserId == post.PostedBy),
                   PostedDate = post.PostedDate,
                   PostId = post.PostId,
            }).AsEnumerable();
    return Json(ret, JsonRequestBehavior.AllowGet);

这是我的挖空视图模型,用于加载数据库中的现有帖子:

function viewModel() {
    var self = this;
    self.posts = ko.observableArray();
    self.newMessage = ko.observable();
    self.error = ko.observable();
    self.loadPosts = function () {
        // to load existing posts
        $.ajax({
            url: postApiUrl1,
            datatype: "json",
            contentType: "application/json",
            cache: false,
            type: 'Get'
        })
        .done(function (data) {
            var mappedPosts = $.map(data, function (item) { return new Post(item); });
            self.posts(mappedPosts);
        })
        .fail(function () {
            error('unable to load posts');
        });
    }

这是我的applicationUser课程。我正在使用ASP.NET Identity进行身份验证和授权。

public class ApplicationUser : IdentityUser<int, CustomUserLogin, CustomUserRole, CustomUserClaim>
{
     public ApplicationUser()
     {
         this.Posts = new HashSet<Post>();
         this.Files = new HashSet<File>();
     }
     public virtual ICollection<File> Files { get; set; }
     public virtual ICollection<Post> Posts { get; set; }

这是我的File类,它将userprofile pic保存在数据库中,并且它有ApplicationUserId外键指向applicationuser类。

public class File
{
     [Key]
     public int FileId { get; set; }
     [StringLength(255)]
     public string FileName { get; set; }
     [StringLength(100)]
     public string ContentType { get; set; }
     public byte[] Content { get; set; }
     public FileType FileType { get; set; }
     public int ApplicationUserId { get; set; }
     public virtual ApplicationUser ApplicationUser { get; set; }
}

我正面临将图像正确绑定到挖空视图模型的问题,以便从数据库中正确地获取图像。如果有人有任何建议,那将非常有帮助。

参考,您可以查看this article; 我只是使用普通的控制器代替Web API控制器和ASP.NET身份来代替简单的成员资格,就是这样。

0 个答案:

没有答案