这是我在挖掘视图模型的帮助下绑定图像的代码:
<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身份来代替简单的成员资格,就是这样。