Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка под ASP.NET > Как получить доступ к отдельным элементам списка


Автор: Karta 27.2.2013, 12:49
Добрый день,
сделала простой проект, в котором отображается таблица даннных.
У меня вопрос: Как я могу получить доступ к отдельным элементам списка? Не могу нигде найти ответа.
Привожу свой код:
1. Я создала модель
Код

 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
 
namespace MvcMovie.Models
{
    public class Movie
    {
        public int ID { get; set; }
        public string Title { get; set; }
        public DateTime ReleaseDate { get; set; }
        public string Genre { get; set; }
        public decimal Price { get; set; }
 
    }
 
    public class MovieDBContext : DbContext
    {
        public DbSet<Movie> Movies { get; set; }
    }
 
}
 

2. Сделала контролер
Код

using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MvcMovie.Models;
 
namespace MvcMovie.Controllers
{
    public class MoviesController : Controller
    {
        private MovieDBContext db = new MovieDBContext();
 
        //
        // GET: /Movies/
 
        public ActionResult Index()
        {
            return View(db.Movies.ToList());
        }
...

 Сделала представление
Код

@model IEnumerable<MvcMovie.Models.Movie>
 
@{
    ViewBag.Title = "Index";
}
 
<h2>Index</h2>
 
<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table>
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.Title)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.ReleaseDate)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Genre)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Price)
        </th>
        <th></th>
    </tr>
 
@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Title)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.ReleaseDate)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Genre)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Price)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { id=item.ID }) |
            @Html.ActionLink("Details", "Details", new { id=item.ID }) |
            @Html.ActionLink("Delete", "Delete", new { id=item.ID })
        </td>
    </tr>
}
 
</table>
 

Вот, в представлении выводится весь список по элементно... А мне нужно, что б выводился только конкретеый фильм из списка.
Например:
Хороший фильм. Комедия. 01/02/2013. 150 руб.

Как этого добиться? Может кто сталкивался с этим?

Спасибо. 

Автор: boevik 27.2.2013, 13:06
определи что бы Index принимал параметер Id
Код

//GET: /Movies/5
 public ActionResult Index(int ID)
        {
            if (ID != null)
                    return View(db.Movies.ToList().Where(k =>k.ID == ID));
            return View(db.Movies.ToList());
        }



Автор: Karta 27.2.2013, 13:25
У меня 2 вопроса:
1. Что такое "к" .И как мне прописать это в представлении?
2. Если мне нужно в моем представлении в 1 части страницы отобразить например только 2 фильма из списка, а в другой части страницы еще 2 фильма из списка ( в списке 20 фильмов). КАк тогда быть?

Автор: boevik 27.2.2013, 13:55
Цитата(Karta @  27.2.2013,  13:25 Найти цитируемый пост)
1. Что такое "к"

k - это об`ект в листе (может быть любая буква);

Цитата(Karta @  27.2.2013,  13:25 Найти цитируемый пост)
2. Если мне нужно в моем представлении в 1 части страницы отобразить например только 2 фильма из списка, а в другой части страницы еще 2 фильма из списка ( в списке 20 фильмов). КАк тогда быть? 

Желательно сделать соотвествующий _Layout, который отабразит несколько PartialViews, каждый PartialView строит табличку из Model передаваемой ему.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)