2016-01-29 3 views
0

Мне нужно реализовать метод в контроллере MVC. КонтроллерОпределение метода в MVC-контроллере

public class OurBoxesController : Controller 

и метод

public static DateTime Next(this DateTime from, DayOfWeek dayOfWeek) 
    { 
     int start = (int)from.DayOfWeek; 
     int target = (int)dayOfWeek; 
     if (target <= start) 
      target += 7; 
     return from.AddDays(target - start); 
    } 

У меня есть эта ERRO «Метода расширения должна быть определена в необщем статическом классе». Я понимаю, но я не понимаю, где мне нужно, чтобы метод использовал его в контроллере. Спасибо

+0

Почему ваш метод должен быть статическим ? Я думаю, это твоя проблема. – Duston

+0

Если я удаляю статическую проблему, то то же самое – user5297740

ответ

2

Подобно тому, как ошибка говорит, вы должны поместить его в необщего статического класса. Что-то вроде этого:

public static class DateTimeExtensions 
{ 
    public static DateTime Next(this DateTime from, DayOfWeek dayOfWeek) 
    { 
     int start = (int)from.DayOfWeek; 
     int target = (int)dayOfWeek; 
     if (target <= start) 
      target += 7; 
     return from.AddDays(target - start); 
    } 
} 

В качестве альтернативы, если вы хотите метод, чтобы быть в контроллере, он не может быть метод расширения:

public static DateTime Next(DateTime from, DayOfWeek dayOfWeek) 
{ 
    int start = (int)from.DayOfWeek; 
    int target = (int)dayOfWeek; 
    if (target <= start) 
     target += 7; 
    return from.AddDays(target - start); 
} 
0

Вы должны сделать это внутри статического класса.

Как это:

static class ExtensionHelper 
{ 

public static DateTime Next(this DateTime from, DayOfWeek dayOfWeek) 
    { 
     int start = (int)from.DayOfWeek; 
     int target = (int)dayOfWeek; 
     if (target <= start) 
      target += 7; 
     return from.AddDays(target - start); 
    } 
} 

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

+0

Я нахожусь в контроллере mvc ... не в статическом классе – user5297740

+0

вам нужно создать этот статический класс :) –

1

метод вы пытаетесь добавить считается extension method.

var dateTime = DateTime.Now; 
var nextMonday = dateTime.Next(DayOfWeek.Monday); 

Методы расширения должны быть помещены в public static class ExtensionsMethods (имя класса не имеет значения).

Вы можете добавить этот метод как метод без расширения (то есть удалить ключевое слово this) или добавить его в статический класс вне класса OurBoxesController.

0

Вы должны удалить this в определении вашего метода. Поставив this, прежде чем ваш от параметра, вы делаете метод как метод расширения и который должен быть определен в статическом, не универсальный класс

public static DateTime Next(DateTime from, DayOfWeek dayOfWeek) 

Extension Methods (C# Programming Guide)

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