Проблема, изменив String в MVC C#

вещь состоит в том, что у меня есть следующие элементы:

Восток - модель:

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.'"

Я жду Вашу помощь, Спасибо заранее.

1
задан 07.11.2019, 12:00
2 ответа

Уже это 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)

Спасибо так или иначе :)

2
ответ дан 01.12.2019, 12:27
  • 1
    Он радует меня, что ты это решил :) – Pikoh♦ 07.11.2019, 16:20

Поскольку я разбираюсь в твоем вопросе, что ты хочешь, состоит в том, чтобы получать список 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>
}
1
ответ дан 01.12.2019, 12:27
  • 1
    Большое спасибо из-за ответа, но уже я это достал jeje приветствие :) – Alejandro Garcia de Diego 07.11.2019, 15:51