Базовый вид Модель класса справочный вопрос.(ASP.net MVC) - PullRequest
0 голосов
/ 25 июля 2010

Вопросы для начинающих:

Где я должен разместить свои объявления View Model?

Я создал файл с именем "ViewModels.cs" в моей папке Models. Я создал несколько классов View Model, включая класс под названием RatingViewModel:

using System;
using System.Collections.Generic;var
using System.Linq;
using System.Web;

namespace Web.Model
{
public class ViewModels
{

    public class RatingViewModel
    {
        public User Rater { get; set; }
        public Rating Rating { get; set; }
    }

}

} V

Теперь я пытаюсь создать функцию вспомогательного класса / класса обслуживания, которая возвращает новый объект RatingViewModel.

Я создал файл «RatingsHelpers.cs». Но когда я пытаюсь создать новый объект RatingViewModel, он понятия не имеет, о чем я говорю. Я не могу понять это. Я что-то пропустил? Как я могу создать / вернуть новый объект View Model из моего класса помощника / сервиса?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Text;
using Web.Model;

namespace System.Web.Mvc
{
    public static class RatingsHelpers
    { 
        public static RatingViewModel functionname()
        { ..... }

Но он не знает, что такое "RatingViewModel" ...!?!?!?

Я просто знаю, что это должно быть очевидно.

Потянув меня за волосы,

Джонни

Ответы [ 3 ]

2 голосов
/ 25 июля 2010

Расширение на то, что сказал Scrini. Наличие класса RatingViewModel, вложенного в класс ViewModels внутри Web.Models, кажется излишним. Вы, вероятно, хотите избавиться от внешнего класса ViewModels.

2 голосов
/ 25 июля 2010

Подводя итог:

  1. Вы создали класс ViewModels внутри пространства имен Web.Model.Этот класс объявляет вложенный класс с именем RatingViewModel
  2. Внутри помощника RatingsHelpers, расположенного в пространстве имен System.Web.Mvc, к которому вы пытаетесь обратиться к классу RatingViewModel.

Youможно добиться этого с помощью ViewModels.RatingViewModel, но я бы не рекомендовал вам этого делать.Вложение классов как это не имеет смысла.

Вместо этого вы можете поместить каждый класс модели представления в отдельный файл .cs и поместить его непосредственно в пространство имен Web.Model:

namespace Web.Model
{
    public class RatingViewModel
    {
        public User Rater { get; set; }
        public Rating Rating { get; set; }
    }
}

Тогда внутри вспомогательного класса можно использовать напрямуюRatingViewModel класс.

2 голосов
/ 25 июля 2010

Проблема в том, что вы помещаете класс RatingViewModel в класс ViewModels, что означает, что это дочерний класс ViewModels.Я не уверен, что такое поведение вы хотите.Если вы хотите вызвать дочерний класс, вы должны написать ViewModels.RatingViewModel для ссылки на класс.

...