MVC 控制器中的方法定义

本文关键字:方法 定义 控制器 MVC | 更新日期: 2023-09-27 18:32:31

我需要在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);
    }

我有这个错误"扩展方法必须在非泛型静态类中定义"。我已经理解了,但我不明白我必须将方法放在哪里才能在控制器中使用它。谢谢<</p>

MVC 控制器中的方法定义

div class="answers">

正如错误所说,您必须将其放在非泛型静态类中。 像这样:

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);
}

您尝试添加的方法被视为扩展方法。

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

扩展方法必须放在public static class ExtensionsMethods中(类的名称无关紧要)。

可以将此方法添加为非扩展方法(即删除 this 关键字),也可以将其添加到 OurBoxesController 类之外的静态类中。

您必须在静态类中执行此操作。

喜欢这个:

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);
    }
}

希望这个帮助

您需要删除方法定义中的this。通过将this放在 from 参数之前,您将该方法作为 Extension 方法,并且必须在静态非泛型类中定义

public static DateTime Next(DateTime from, DayOfWeek dayOfWeek)

扩展方法(C# 编程指南)