Я чувствую себя самым большим идиотом - я думал, что только ActionResults
было отправлено обратно клиенту. По этой причине в моем контроллере было множество "вспомогательных" методов.
Я только что попытался получить к ним доступ через URL, и клянусь, я чуть не сошел с ума, когда увидел, что к ним можно добраться! ... К счастью, никто еще не обнаружил это.
Один из таких методов, который я вызываю снова и снова:
public User GetCurrentUser()
{
User user = db.Users.SingleOrDefault(x => x.UserName == User.Identity.Name);
return user;
}
Я только что создал папку с именем "Logic" внутри своей папки Models, и я пытаюсь отделить код - мне просто интересно, какова лучшая стратегия для вызова кода, пространств имен и многого другого?
В приведенном выше примере я использую User.Identity.Name
, который наследуется только от Controller
. Если я добавлю это, я вернусь к первой стадии!
Благодаря Дарину Димитрову я теперь знаю об атрибуте [NonAction]
- который, добавляя к этим методам, делает точно , что мне нужно / исправляет проблему безопасности, однако многие из этих методов используются в разные контроллеры, и я знаю, что было бы лучше, если бы я мог отделить логику от контроллеров. Я просто не уверен, как лучше это сделать.
Может ли кто-нибудь направить меня в правильном направлении, прежде чем я начну рвать все свои волосы!?