|
In E-Commerce-Websites wird die Fortschrittsleiste manchmal verwendet, um visuell anzuzeigen, ob ein Nutzer fällig ist und wie der aktuelle Status des Nutzers ist.
Entwerfen Sie ein solches Modell.
- public class User
- {
- public int Id { get; set; }
- public string Name { get; set; }
- public int CoopTime { get; set; }
- public DateTime JoinTime { get; set; }
- }
Code kopierenDas oben Genannte ist das Kooperationsdauer-Attribut CoopTime und das Jointime-Attribut JoinTime zwei Attribute, die eng mit dem Fortschritt verbunden sind.
In HomeController wird eine Aktionsmethode verwendet, um die Schnittstelle anzuzeigen, und eine Aktionsmethode wird verwendet, um GET-Anfragen aus der View- und Rücksendungs-JSON-Daten zu empfangen. - public ActionResult Index()
- {
- return View();
- }
- public ActionResult GetStatus()
- {
- User user = new User()
- {
- Id = 1,
- Name = "某某用户",
- CoopTime = 1,
- JoinTime = new DateTime(2014, 3, 20)
- };
- //判断合作是否已经到期
- int result = DateTime.Compare(DateTime.Now, user.JoinTime.AddYears(user.CoopTime));
- if (result <= 0) //当前时间比合作到期时间早,合作未到期
- {
- //计算时间
- var pastDays = (DateTime.Now.Subtract(user.JoinTime)).TotalDays;
- var oneYearDays = (user.JoinTime.AddYears(user.CoopTime).Subtract(user.JoinTime)).TotalDays;
- var pastPercentage = (pastDays / oneYearDays) * 100;
- var dataSuccess = new { msg = true, p = pastPercentage };
- return Json(dataSuccess, JsonRequestBehavior.AllowGet);
- }
- else //当前时间比合作到期时间晚,合作已到期
- {
- var dataFail = new { msg = false, p = 100 };
- return Json(dataFail, JsonRequestBehavior.AllowGet);
- }
- }
- }
Code kopierenOben, ● Verwenden Sie die statische Methode DateTime Compare zum Vergleichen von 2 Zeiten, eines ist die aktuelle Zeit, das andere die Join-Zeit + Kooperationsdauer. Wenn das Ergebnis kleiner oder gleich 0 ist, bedeutet das, dass kein Ablauf vorliegt. ● Verwenden Sie die statische Methode DateTime, Subtrahieren, um 2 Mal abzuziehen.
Home/Index.cshtml senden Sie beim Laden der Seite eine asynchrone GET-Anfrage an den Server, um die zurückgegebenen Daten in der Fortschrittsleiste anzuzeigen. - <head>
- <meta name="viewport" content="width=device-width" />
- <title>Index</title>
- <link href="~/Content/themes/base/jquery-ui.css" rel="stylesheet" />
- <scrip{过滤}t src="~/scrip{过滤}ts/jquery-1.8.2.min.js"></scrip{过滤}t>
- <scrip{过滤}t src="~/scrip{过滤}ts/jquery-ui-1.8.24.min.js"></scrip{过滤}t>
- <scrip{过滤}t type="text/javascrip{过滤}t">
- $(function () {
-
- $.getJSON('@Url.Action("GetStatus","Home")', function(data) {
- if (data.msg == true) {
- var temp = parseInt(data.p);
- $('#p').progressbar({
- value: temp
- });
- } else {
- $('#message').text('已到期');
- $('#p').progressbar({
- value: parseInt(data.p)
- });
- }
- });
- });
- </scrip{过滤}t>
- </head>
- <body>
- <div id="p">
- </div>
- <div>
- <span id="message"></span>
- </div>
- </body>
Code kopieren
|