отображать время в asp.net? - PullRequest
       36

отображать время в asp.net?

0 голосов
/ 28 февраля 2011
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MvcApplication3.Controllers
{

    public class HomeController : Controller
    {
        [OutputCache(Duration=10)]
        public string Index()
        {

            return DateTime.Now.ToString("T");


        }

        public ActionResult About()
        {
            return View();
        }
    }
}

Я просто пытаюсь отобразить время в asp.net mvc2.Но когда я запускаю вышеупомянутую программу, она выдает следующее исключение. Можете ли вы сказать мне, что не так?

Ошибка сервера в «/» приложении.В директиве или в профиле параметров конфигурации должен быть указан атрибут «varByParam».Описание: во время выполнения текущего веб-запроса произошло необработанное исключение.Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: System.Web.HttpException: в директиве или профиле параметров конфигурации должен быть указан атрибут «varByParam».

Ошибка источника:

Во время выполнения текущего веб-запроса было сгенерировано необработанное исключение.Информацию о происхождении и местонахождении исключения можно определить с помощью приведенной ниже трассировки стека исключений.

Ответы [ 2 ]

0 голосов
/ 28 февраля 2011

Поскольку в сообщении об ошибке указывается, вам нужно указать атрибут VaryByParam для используемого кеша:

[OutputCache(Duration = 10, VaryByParam = "none")]
public string Index()
{
    return DateTime.Now.ToString("T");
}

Также действия контроллера обычно должны возвращать ActionResults, а не строки:

[OutputCache(Duration = 10, VaryByParam = "none")]
public ActionResult Index()
{
    return Content(DateTime.Now.ToString("T"), "text/plain");
}
0 голосов
/ 28 февраля 2011

Рекомендуется, чтобы методы действия возвращали ActionResult, поэтому я бы посоветовал вам попробовать это.

[OutputCache(Duration = 10, VaryByParam="none")]
public ActionResult Temp()
{
    return Content(DateTime.Now.ToString("T"));
}

или, если вы просто хотите исправить для своего фрагмента, попробуйте это.

[OutputCache(Duration = 10, VaryByParam="none")]
public string Temp()
{
    return DateTime.Now.ToString("T");
}
...