0
Я борюсь с проблемой, которая кажется очень странной.Как получить доступ к собственности модели в представлении MVC?
1) У меня есть класс с именем 'Tumblr'
public class Tumblr
{
public string BlogName { get; set; }
public dynamic PhotosCollection { get; set; }
}
2) У меня есть метод в мой контроллер
public ActionResult Index()
{
var model = new List<Tumblr>();
var client = new HttpClient();
var task = client.GetAsync("http://api.tumblr.com/v2/blog/puppygifs.tumblr.com/posts/photo?api_key=SbvxQcWuuNr1mfRvILKKTqiztMGvR8hbGPBDA9PlMidrYdd8Ik")
.ContinueWith((taskWithMsg) =>
{
var response = taskWithMsg.Result;
var jsonTask = response.Content.ReadAsAsync<JObject>();
jsonTask.Wait();
var jsonResponse = jsonTask.Result;
model = FillModel(jsonResponse, model)
});
task.Wait();
return View(model);
}
private List<Tumblr> FillModel(dynamic jsonObject, List<Tumblr> model)
{
var postObject = (JArray)jsonObject["response"].posts;
var posts = postObject.Select(e => new Tumblr()
{
BlogName = e["blog_name"].ToString(),
PhotosCollection = e["photos"].Select(o => new
{
Photos = o["alt_sizes"].Select(s => new
{
Width = s["width"].ToString(),
Height = s["width"].ToString(),
Url = s["width"].ToString(),
})
})
});
model.AddRange(posts);
return model;
}
А вот мой взгляд
@using System.Collections
@{
ViewBag.Title = "Home Page";
}
<ol class="round">
@foreach (dynamic blog in Model)
{
<li class="one">
<h5>@blog.BlogName</h5>
<span>@blog.PhotosCollection</span>
<hr />
<hr />
<hr />
@foreach (dynamic photos in blog.PhotosCollection)
{
foreach (var photo in photos.Photos)
{
<img src="@photo.Url" width="@photo.Width" height="@photo.Height"/>
}
}
<hr />
</li>
}
</ol>
Когда Я пытаюсь запустить, он выдает ошибку с
'object' does not contain a definition for 'Photos'
Я не понимаю, почему это порождает ошибку, хотя у меня есть свойство в моей модели.
Есть ли причина, что вы используете ' dynamic's везде и не используя '@model List' в верхней части вашего кода Razor? Кроме того, знаете ли вы, что вы ссылались на свойство как «Фото»? –
См. Здесь http://stackoverflow.com/questions/8820356/dynamic-type-in-mvc-view – glosrob
Привет, я добавил модель на мой взгляд, но это не будет иметь никакого эффекта. О «Фото», которые были написаны по ошибке. Правильно, даже не разрешайте проблему. Я все еще получаю ту же ошибку. Причина использования динамического, потому что я вызываю стороннюю api tumblr. Если вы хотите посмотреть ответ json, см. Здесь http://api.tumblr.com/v2/blog/puppygifs.tumblr.com/posts/photo?api_key=SbvxQcWuuNr1mfRvILKKTqiztMGvR8hbGPBDA9PlMidrYdd8Ik – user2866746