Как вы уже упоминали, не рекомендуется выводить PK строк таблицы элементов в View, как будто они находятся в HTML страницы, они доступны для просмотра.
Если я правильно понимаю, под «[скрытием] этих идентификаторов от пользователей» я предполагаю, что вы имеете в виду запутывание идентификаторов каким-либо образом, поэтому даже если они взяты из HTML представления, они мало что значат в их индивидуальном контексте.
Одним из способов достижения вышеуказанного является использование ViewModel для вывода ваших связанных данных в представление, но в вашем конкретном классе ViewModel вы можете иметь некоторую пользовательскую логику свойств для кодирования PK с помощью AES (два-путь) алгоритм шифрования, с солью для шифрования является то, что известно только вам (и вашему серверу).
Это был бы один из способов «защиты» PK в представлении.
При таком подходе вам, возможно, придется учитывать издержки производительности при шифровании / дешифровании PK, когда эти данные пересылаются в обратном направлении!
Это может быть интересно, если вы перейдете внизмаршрут шифрования:
Простая небезопасная двусторонняя «обфускация» для C #
Вы также можете добиться большей прозрачности с помощьюбез шифрования с помощью поиска значения ключа в памяти (данные кэша или сеанса), который выводит произвольные числа в качестве идентификаторов для представления для каждого из ваших элементов таблицы, и, когда извлекается из представления, PK обращается вверх отколлекция воспоминаний.