dlnzki Ответов: 1

Как рассчитать процент в viewbag после нажатия кнопки Отправить?


Я попытался вычислить процент от общего количества в viewbag после того, как нажал на кнопку Отправить. но программа отображает значение до нажатия кнопки Отправить.

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

Что я уже пробовал:

в виду:

<tr style="text-align:center">
                            <td>@ViewBag.datepick.Count</td>
                            <td>@ViewBag.pass.Count</td>
                            <td></td>
                        </tr>


в контроллерах:

public ActionResult TesterPerformance(string name, DateTime? start, DateTime? end)
       {


           var selectdate = (from c in db.Information
                             join t in db.Testers
                             on c.TesterID equals t.TesterID
                             join i in db.Parameters
                             on c.Stag_status equals i.ParameterID
                             where  c.Time_start >= start && c.Time_start <= end
                             select new DetailBundle
                             {
                                 Time_start = c.Time_start,
                                 Time_fail = c.Time_fail,
                                 Time_pass = c.Time_pass,
                                 Param_desc = i.Param_desc,
                                 TesterName = t.TesterName,
                                 Service_tag = c.Service_tag

                             }).ToList();
           ViewBag.datepick = selectdate;
           var selectpass = (from c in db.Information
                             join t in db.Testers
                             on c.TesterID equals t.TesterID
                             join i in db.Parameters
                             on c.Stag_status equals i.ParameterID
                             where c.Time_start >= start && c.Time_start <= end &&  i.Param_desc=="pass"
                             select new DetailBundle
                             {
                                 Time_start = c.Time_start,
                                 Time_fail = c.Time_fail,
                                 Time_pass = c.Time_pass,
                                 Param_desc = i.Param_desc,
                                 TesterName = t.TesterName,
                                 Service_tag = c.Service_tag

                             }).ToList();
           ViewBag.pass = selectpass;

           ViewBag.Percentage = (ViewBag.pass.Count / ViewBag.datepick.Count) * 100;
           return View();
       }


кнопка Отправить находится в том же представлении

F-ES Sitecore

Проблема в том, что он показывает "старое" значение или что вы получаете деление на ноль? Покажите разметку,где показано значение\inputs, а также укажите, какая именно строка выдает ошибку.

Laxmidhar tatwa technologies

Видовой мешок.Процент = ViewBag.datepick.Count <= 0 ?ViewBag.pass.Граф : (ViewBag.pass.Число / ViewBag.datepick.Количество) * 100;

1 Ответов

Рейтинг:
2

Richard Deeming

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

Вам также нужно будет скорректировать расчет - в настоящее время вы выполняете целочисленное деление, поэтому ваш результат будет либо 0%, либо 100%.

Попробуй:

ViewBag.Percentage = selectdate.Count == 0 ? 0D : 100D * (double)selectpass.Count / selectdate.Count;