Waar kan ik aangepaste klassen in ASP.NET MVC plaatsen?

Ik heb een aantal hulpprogramma’s en een pagineringsfunctie. Ik wil klassen maken met de namen Utility en Paginering respectievelijk voor deze functies, zodat ik deze klassenfunctie in meer dan één controller kan gebruiken.

Dus waar kan ik deze klassen in mijn mappenstructuur plaatsen, en hoe kan ik er dan toegang toe krijgen?


Antwoord 1, autoriteit 100%

Je kunt ofwel een nieuwe map maken met de naam Helpersonder de root en je lessen daar fysiek bewaren. Ik zou mijn lessen onder een andere naamruimte houden, genaamd Helpers

namespace MyProject.Helpers
{
  public class CustomerHelper
  {
        //Do your class stuff here
  }
}

Om dit toe te laten in mijn andere lessen (bijv. Controllers), kan ik ofwel de volledig gekwalificeerde naam gebruiken

var custHelper=new MyProject.Helpers.CustomerHelper(); 

OF

voeg bovenaan een Import-instructie toe zodat ik de volledig gekwalificeerde naam kan overslaan

//Other existing Import statements here
using MyProject.Helpers;
public class RackController : Controller
{
  public ActionResult Index()
  {
     var custHelper=new CustomerHelper(); 
     //do something with this  
     return View();    
  } 
}

Als u denkt dat uw Helper-methode ook in een ander project kan worden gebruikt, kunt u overwegen deze fysiek in een apart projectte bewaren (van het type klassenbibliotheek). Om dit in uw project te gebruiken, voegt u een verwijzing naar dit project toe en gebruikt u het zoals we hierboven hebben gedaan (gebruik ofwel een volledig gekwalificeerde naam of gebruik de importverklaring)


Antwoord 2, autoriteit 14%

Je kunt je helperklassen overal plaatsen waar je maar logisch en handig vindt.

Persoonlijk maak ik een map Helpersaan buiten de hoofdprojectmap.

Je kunt ze overal gebruiken, door de klasnaam volledig te kwalificeren of met een using-instructie.

In een Razor-weergave gebruikt u

@using MyProject.Helpers

In een controller of model dat u zou gebruiken

using MyProject.Helpers;

Antwoord 3, autoriteit 8%

Een andere benadering zou kunnen zijn om een ​​Base Controller-klasse te creëren en daar je gemeenschappelijke logica toe te voegen, en je controller af te leiden van je basiscontroller.

public class MyBaseController:Controller
{
   public void CommonFunction()
    {
    }
}

Gebruik zoals…

public HomeController:MyBaseController
{
}

Antwoord 4, autoriteit 7%

U kunt een nieuw project maken en vervolgens de algemene klassen in het project plaatsen. Als u ze wilt gebruiken, hoeft u alleen maar naar het project te verwijzen.


Antwoord 5

Zorg er ook voor dat u de “Build Action” van uw klas instelt op “Compile”.
In Visual Studio 2015 kreeg elke klasse die in de App_Code is gemaakt (door met de rechtermuisknop te klikken -> Add -> Class) standaard “Content” als Build-actie.

Other episodes