控制器类中所有方法的通用代码

时间:2019-01-22 18:07:01

标签: asp.net-core asp.net-core-mvc asp.net-core-2.0

我有10个使用相同代码块的控制器,但我不知道如何编写一次代码并在各处使用它。

我必须定义一个对象:

  

requiredStructuralSupportParameters

,然后在对象中设置3个字段。

这是使用它的控制器方法之一:

public class StructureController : Controller
{   
    public IActionResult Index()
    {

        var requiredStructuralSupportParameters = new Structure.RequiredInfo()
        {
            Steel = "1500y",
            Concrete = "5500l",
            Rebar = "95000y"
        };

        var response = callToAPI(requiredStructuralSupportParameters);

        return response.Results;
    }
}

我曾尝试将这些代码取出并放在控制器类的顶部并公开,但是然后我的控制器看不到它,并且出现nullreferenceexception错误。

因此,仅当我将其直接放在控制器方法中时,它才起作用。

有没有办法做到这一点,以便所有控制器都可以重用相同的代码块?

1 个答案:

答案 0 :(得分:2)

public class StructureController : Controller
{   
    protected YourType _requiredStructuralSupportParameters;

    public StructureController()
    {
        this._requiredStructuralSupportParameters = new Structure.RequiredInfo()
        {
            Steel = "1500y",
            Concrete = "5500l",
            Rebar = "95000y"
        };
    }
}

然后让您的其他控制器继承您的StructureController

public SomeController : StructureController{

   public IActionResult Index() {
      var response = callToAPI(this._requiredStructuralSupportParameters);

      return response.Results;
   }
}

还没有测试过,但我希望你有个好主意