вещь состоит в том, что у меня есть следующие элементы:
Восток - модель:
public class Pelicula
{
[Key]
public int Id_Pelicula { get; set; }
public string Titulo { get; set; }
[Display(Name = "Fecha de estreno")]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime Fecha_lanzamiento { get; set; }
public int Duracion { get; set; }
public string Nacionalidad { get; set; }
[Display(Name = "Actores Principales")]
public string PPActores { get; set; }
public decimal Precio { get; set; }
public string Nota { get; set; }
public string Sinopsis { get; set; }
public string Director { get; set; }
[Required]
public string Imagen { get; set; }
public int GenID { get; set; }
[ForeignKey("GenID")]
public virtual Genero Genero { get; set; }
public virtual ICollection<Persona> Persona { get; set; }
}
Это Драйвер (прокомментированные линии - какие-то альтернативы, которые я протестировал)
public ActionResult Index()
{
var moviess = from s in db.Pelicula
select s;
ViewBag.moviess = moviess;
var Imaagen = db.Pelicula.Select(x => x.Imagen.ToUpper().LastIndexOf("\\IMAGES")).ToList();
//var Imaagen = db.Pelicula.Select(x => x.Imagen.ToUpper().Length - System.Data.Entity.DbFunctions.Reverse(x.Imagen.ToUpper()).IndexOf("\\IMAGES"));
//var Imaagen = db.Pelicula.Select(x => x.Imagen.ToUpper().Contains("\\IMAGES"));
ViewBag.Imaagen = Imaagen;
return View(db.Pelicula.ToList());
}
И это вид:
@model IEnumerable<MVCBiblio.Models.Pelicula>
@foreach (String imagen in ViewBag.Imagen)
{
<div class="col-md-4"><img src="@Url.Content(@ViewBag.Imaagen)"> <p style="text-align:center"></p></div>
}
Главным образом то, что я хочу, что, получив такой маршрут как следующая: "C:\Users\dediego96\Desktop\MVCBiblio\MVCBiblio\IMAGES\aladin.png"
осталось одиноким это: "\IMAGES\aladin.png"
Этот фильтр функционирует для единственного фильма:
Imaagen = Imaagen.Substring(Imaagen.ToUpper().LastIndexOf("\\IMAGES"));
Но я хочу, чтобы он был сделан для списка. Проблема, которая дает мне, состоит, в том, что использовав Linq, линию, которую я поместил в драйвер, ни один из 3 выборов, он оставляет меня, и если я это тестирую, как я это показал дает мне следующую ошибку:
"'LINQ to Entities does not recognize the method 'Int32 LastIndexOf (System. String)' method, and this method cannot be translated into в store expression.'"
Я жду Вашу помощь, Спасибо заранее.
Уже это solucionГ© глупым, простым способом и случайности: В contrroller.
var Imaagen = db.Pelicula.Select(x => x.Imagen.ToUpper()
.Substring(x.Imagen.IndexOf("\\IMAGES"))).ToList();
а именно сменил last на index просто...
и в виде это dejГ© так
@foreach (var imagen in ViewBag.Imaagen)
{
<div class="col-md-4"><img src="@Url.Content(@imagen)"> <p style="text-align:center"></p></div>
@Html.DisplayFor(model => model.FirstOrDefault().Titulo)
Спасибо так или иначе :)
Поскольку я разбираюсь в твоем вопросе, что ты хочешь, состоит в том, чтобы получать список List<>
PelГ-culas с Изображением типа "\IMAGES\imagen.png"
, которые потом pasarГЎs в поле зрения в travГ©s ViewBag
.
Для этого не harГ - в отсутствие, что ты использовал Linq, ты можешь пробегать список с одним foreach
и применять изменения к полю Imagen
:
List<Pelicula> Imaagen = db.Pelicula.ToList();
foreach (var item in Imaagen)
{
item.Imagen = item.Imagen.Substring(item.Imagen.ToUpper().LastIndexOf("\\IMAGES"));
}
ViewBag.Imaagen = Imaagen;
Потом в Виде, ты пробегаешь ViewBag
с одним foreach
, чтобы показывать ее imГЎgenes.
@foreach (Pelicula pelicula in (List<Pelicula>)ViewBag.Imaagen)
{
<div class="col-md-4">
<img src="@Url.Content(pelicula.Imagen)">
<p style="text-align:center"></p>
</div>
}