Есть ли способ проверить, какой метод View вызывается в ASP.NET MVC?Проверьте, какой метод просмотра в контроллере вызывается ASP.NET MVC
Например, у меня есть простой статический метод, который возвращает сообщения из базы данных, и у меня есть два представления, которые делают подобное, но все-таки не то же самое. На одном из представлений я публикую сообщение от зарегистрированного пользователя, а с другой - показываю сообщения от всех пользователей (представьте, что, как страницы Facebook, где на стене вы видите только свои сообщения, а на странице NewsFeed вы можете видеть как ваши, так и ваши друзья).
Так что мой конкретный вопрос будет, я могу реализовать свой метод, чтобы сделать что-то вроде этого:
public static List<Post> GetPosts(int BlockNumber, int BlockSize, string id)
{
ApplicationDbContext db = new ApplicationDbContext();
int startIndex = (BlockNumber - 1) * BlockSize;
var listPosts = db.Posts.ToList();
if (METHOD INVOKED FROM ProfilePage SHOW ONLY CURRENT USER POSTS)
{
listPosts = listPosts.Where(p => p.UserId == id).Reverse().ToList();
}
else if(METHOD INVOKED FROM NEWSFEED SHOW ALL USERS POSTS)
{
listPosts = listPosts.Reverse().ToList();
}
var posts = listPosts.Skip(startIndex).Take(BlockSize).ToList();
return posts;
}
Моя идея заключается в том, чтобы просто отправить пустую строку для идентификатора из NewsFeedController, а затем проверить, если идентификатор пустой шоу все сообщения, и если значение id присутствует, а не пусто, покажите только сообщения для пользователя с этим идентификатором. Я считаю, что это сработает, но меня интересует какой-нибудь другой, более хороший способ сделать это. Может ли ASP.NET MVC и C# делать что-то вроде этого? Эти два представления делают подобные вещи, и я хотел бы избежать ненужного избыточности кода.
Возможно, вы можете использовать 'Request.UrlReferrer', который находится в' HttpContext'. –
Еще одна вещь - не связана с вопросом, но стоит знать. Ваш метод считывает все записи из db в память (listPosts = listPosts.Reverse(). ToList()), а затем создает «страницу» с пропуском и записью. Вы должны рассмотреть возможность передачи startindex и блокировать запрос - когда ваше приложение станет зрелым, и предположим, что миллионы сообщений, загрузка всех из них, чтобы просто фильтровать последние 20, будет огромной тратой ресурсов – cyberhubert
@cyberhubert Хорошая точка. Вы совершенно правы. Это просто тестовое приложение, поэтому у него не будет 20 миллионов сообщений, но это точка тестовых приложений, предсказать возможные сценарии в будущем :) –