ASP.NET MVC2 C # - простой вопрос - PullRequest
0 голосов
/ 19 ноября 2010
    var categoryModel = AfvClassifiedsDB.Categories.Include("Listings")
            .Single(c => c.Title == categoryName);

        var viewModel = new ClassifiedsBrowseViewModel
        {
            Category = categoryModel,
            Listings = categoryModel.Listings.OrderBy(c => c.Price).ToList(),
            DateListed = 
        };

Я получаю некоторые результаты из базы данных, а затем объявляю их в ViewModel.

Я хочу дать DateListed (часть модели представления) значение. Это значение является частью списков. Однако, я хочу, чтобы это значение было в определенном формате даты: ".ToString (" MMMM dd, yyyy ");"

Просто немного застрял в том, почему я не могу получить значение из списков.

Большое спасибо, J

Отредактировано для добавления полного ActionMethod:

 public ActionResult ViewCategory(string categoryName, string searchCriteria = "Price")
    {
        // Retrieve Category and its associated Listings from the database
        var categoryModel = AfvClassifiedsDB.Categories.Include("Listings")
            .Single(c => c.Title == categoryName);

        var viewModel = new ClassifiedsBrowseViewModel();
        viewModel.Category = categoryModel;
        viewModel.Listings = categoryModel.Listings.OrderBy(c => c.Price).ToList();
        viewModel.DateListed = viewModel.Listings.First().DateListed.ToString("MMMM dd, yyyy");

        switch(searchCriteria)
        {
            case "Title":
                viewModel.Listings = categoryModel.Listings.OrderBy(c => c.Title).ToList();
                break;
            case "Price":
                viewModel.Listings = categoryModel.Listings.OrderBy(c => c.Price).ToList();
                break;
            case "FuelType":
                viewModel.Listings = categoryModel.Listings.OrderBy(c => c.FuelType).ToList();
                break;
            case "Transmission": 
                viewModel.Listings = categoryModel.Listings.OrderBy(c => c.Transmission).ToList();
                break;
            default:
                viewModel.Listings = categoryModel.Listings.OrderBy(c => c.DateListed).ToList();
                break;
        }

        return View(viewModel);
    }

Ответы [ 5 ]

0 голосов
/ 19 ноября 2010

Я думаю, что ваша проблема в вызове Single вместо First

Я бы использовал такой код:

    var categoryModel = AfvClassifiedsDB.Categories.Include("Listings")
            .First(c => c.Title == categoryName);

        var viewModel = new ClassifiedsBrowseViewModel
        {
            Category = categoryModel,
            Listings = categoryModel.Listings.OrderBy(c => c.Price).ToList(),
            DateListed = categoryModel.Listings.DateListed.ToString("("MMMM dd, yyyy")
        };

Single возвращает список длиной 1, а First возвращает первый объект из списка.

0 голосов
/ 19 ноября 2010

Предполагая, что у вас есть указанная в списке недвижимость для объектов в Списках

DateListed = categoryModel.Listings.First().DateListed.ToString("MMMM dd, yyyy")
0 голосов
/ 19 ноября 2010

Не знаете, как выглядят ваши данные, но разве это не поможет?

DateListed = categoryModel.DateListed.ToString("MMMM dd, yyyy");
0 голосов
/ 19 ноября 2010

Вы не можете использовать инициализатор свойства здесь.Шаг за шагом присваивайте значения:

var viewModel = new ClassifiedsBrowseViewModel();
viewModel.Category = categoryModel;
viewModel.Listings = categoryModel.Listings.OrderBy(c => c.Price).ToList();
viewModel.DateListed = viewModel.Listings.Select(item=>item.ToString("MMMM dd, yyyy")).ToList();

Простое объяснение:

class Person
{
   public int ID { get;set; }
   public string Name { get;set; }
}
var p = new Person { ID=1, Name="test1" }; //ok
var another = new Person
    {
       ID = 2,
       Name = "test"+ID         //compile error
    };
var again = new Person();
again.ID = 3;
again.Name = "test"+again.ID; //of course it's correct
0 голосов
/ 19 ноября 2010

в этом посте есть большой список всех типов форматирования строки даты и времени http://www.csharp -examples.net / string-format-datetime /

надеюсь, это поможет

Пол

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...