Я хочу напечатать ссылку в моем режиме бритвы с кодировкой id элемента. Поэтому я сделал метод расширения для кодирования int в строку base64.MVC Asp.Net: Динамические переменные и методы расширения в представлениях Razor
Код следующий:
@Html.ActionLink("Delete Item", "Delete", new{ idItem = item.IdItem.EncodeTo64() })
item.IdItem является INT, но, как я работаю с динамическими переменными, то EncodeTo64() метод не признается в качестве метода расширения от переменной int. И это возвращает ошибку:
'int' doesn't have a definition for 'EncodeTo64'
Итак, я нашел решение: бросить динамическую переменную, например:
@Html.ActionLink("Delete Item", "Delete", new{ idItem = ((int)item.IdItem).EncodeTo64() })
Это работает, но я не люблю это решение .. Знаете ли вы какой-либо способ избежать этого приведения и заставить его работать?
Спасибо!
EDIT:
Это метод расширения:
public static string EncodeTo64(this int number)
{
byte[] encoded = System.Text.Encoding.UTF8.GetBytes(number.ToString());
return Convert.ToBase64String(encoded);
}
Есть ли причина, по которой вы не можете использовать EncodeTo64(), прежде чем передать модель в представление? –
Можете ли вы предоставить код метода расширения? –
На самом деле, я думаю, вы должны * кодировать его перед тем, как передать его в представление. – danielrozo