2010-07-25 3 views
0

Вопросы новичков:Базовый обзор Вопрос о задании класса модели. (ASP.net MVC)

Где я должен помещать объявления View Model?

Я создал файл под названием «ViewModels.cs» в папке «Моды». Я создал несколько классов Model View, в том числе один называется 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» ...!?!?!?

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

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

Джонни

+0

не уверен, что вы можете использовать «System.Web.Mvc» в качестве собственного пространства имен. – mxmissile

ответ

2

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

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

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

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

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

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

+0

Большое спасибо! – johnnycakes

2

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

2

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

Смежные вопросы