Как манипулировать значением элемента в представлении без манипуляций со значением модели? - PullRequest
0 голосов
/ 23 сентября 2019

Я только начал изучать ASP.Net MVC, я пытаюсь изменить свой предыдущий код (который был основан на WebForm) на MVC, но я столкнулся с проблемой, представьте, что я работаю над статьей, чтобы показать ее список:

Вот модель:

public class Article
    {
        public int ID { get; set; }
        public string ArticleTitle { get; set; }
        public DateTime CreationDateTime { get; set; }
  }

Вот часть представления:

<span> @Html.DisplayFor(modelItem => item.CreationDateTime )</span>

Я написал метод в контроллере для изменения географической даты на персидскую дату:

public string ConvertToPersianDate(object date)
        {
            clsWorkWithDate wwd = new clsWorkWithDate();
            date = wwd.gregorianToShamsi(Convert.ToDateTime(date));
            return date.ToString();
        }

Теперь я хочу получить доступ к этой функции, что-то вроде этого:

@ConvertToPersianDate(@Html.DisplayFor(modelItem => item.CreationDateTime ))

Но сообщение об ошибке говорит, что ConvertToPersianDate не существует в текущем контексте, этокажется, что это не доступно в представлении.

У меня не было проблем, когда оно было в представлении списка WebForm:

<%#  ConvertToPersianDate(Eval("CreationDateTime")) %>

Как мне решить проблему?

1 Ответ

1 голос
/ 23 сентября 2019

Во-первых, ваша функция должна быть статической.

public static string ConvertToPersianDate(object date)
{
    clsWorkWithDate wwd = new clsWorkWithDate();
    date = wwd.gregorianToShamsi(Convert.ToDateTime(date));
    return date.ToString();
}

Затем вы можете использовать такую ​​функцию, как эта

@Html.DisplayFor(modelItem => YourAppName.Controllers.YourControllerName.ConvertToPersianDate(item.CreationDateTime) )

Вы можете сократить это, добавив использование в верхней частипросмотр.

@using YourAppName.Controllers
…
@Html.DisplayFor(modelItem => YourControllerName.ConvertToPersianDate(item.CreationDateTime) )

РЕДАКТИРОВАТЬ

Это должно работать нормально.

@YourAppName.Controllers.YourControllerName.ConvertToPersianDate(item.CreationDateTime)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...