Member 14317227 Ответов: 1

Как я могу фильтровать данные по дате начала и окончания в ASP.NET MVC


Привет ,

Я хочу создать такой демо-я не знаю, как я могу сделать это в asp.net сущность фреймворка

https://i.stack.imgur.com/XdNdN.gif[^]

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

This is my view :

<pre>@using (Html.BeginForm())
{
        <div>
            <span>Start Date :</span> <input type="date" name="start" />
            <span>End Date :</span> <input type="date" name="end" />
            <input type="submit" value="Get Records Between Dates" />
        </div>
        <table>
        @foreach (var item in Model)
        {
            <tbody>
               <tr>
                    <td>
                         @Html.DisplayFor(modelItem => item.expenses.Expenses_Type)
                    </td>
                    <td>
                        @Html.DisplayFor(modelItem => item.DateExpense)
                    </td>
                    <td>
                        @Html.DisplayFor(modelItem => item.Amount)
                    </td>                           
            </tbody>
         }
        </table>

}


А это мой контроллер :

public ActionResult Index(DateTime? start, DateTime? end)
   {
       var ExpenseDetails = _context.ExpenseDetails.Include(s => s.expenses).ToList();

       return View(ExpenseDetails);
   }

Gerry Schmitz

Мы не знаем, какие поля даты находятся в расходах. Это то, что вы сравниваете.

Member 14317227

нет , это любая дата, не указанная дата, так что он может ввести и comber любую дату

Bryian Tan

вы пробовали использовать .Where состояние?

Member 14317227

да я этим пользуюсь

публичный индекс ActionResult(DateTime? Начало, Дата и время? конец)
{
ВАР ExpenseDetails = _context.ExpenseDetails.Включить(s => s.расходы).Где(Т =&ГТ; Т.DateExpense &ГТ;= запустить &амп;&амп; Т.DateExpense &ЛТ;= конец).Список();

вид возврата(ExpenseDetails);
}

но когда я запускаю приложение там нет никаких данных

Member 14317227

не могли бы вы проверить правильность кода пожалуйста

Bryian Tan

Это кажется правильным, если бы присутствовала дата начала/окончания.

Member 14317227

Спасибо , что код работает , но как я могу показать все данные до того, как я отфильтрую или выберу дату, чтобы пользователь мог видеть все данные, и когда он хочет отфильтровать их по дате, он может сделать это также ?

Christian Graus

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

Код, который вы опубликовали, кажется разумным. Если вы хотите помочь, вам нужно сказать больше, чем "не работает". Расскажите нам, что вы пробовали. Отправляются ли даты и время на задний план? Если нет, то использовали ли вы Fiddler, чтобы увидеть, что публикуется?

Я думаю, вам может понадобиться установить "id", а также "name" для значений, которые будут разнесены?

1 Ответов

Рейтинг:
1

Christian Graus

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

Код, который вы опубликовали, кажется разумным. Если вы хотите помочь, вам нужно сказать больше, чем "не работает". Расскажите нам, что вы пробовали. Отправляются ли даты и время на задний план? Если нет, то использовали ли вы Fiddler, чтобы увидеть, что публикуется?

Я думаю, вам может понадобиться установить "id", а также "name" для значений, которые будут разнесены?


Member 14317227

Спасибо , что код работает , но как я могу показать все данные до того, как я отфильтрую или выберу дату, чтобы пользователь мог видеть все данные, и когда он хочет отфильтровать их по дате, он может сделать это также ?

Christian Graus

Я делаю это вот так....


публичный индекс ActionResult(DateTime? Начало, Дата и время? конец)
{
ВАР ExpenseDetails = _context.ExpenseDetails.Включить(s => s.расходы).Где(Т =&ГТ; (!начать.Свойство hasvalue || Т.DateExpense &ГТ;= запустить) и усилитель; & (!конец.HasValue || t.DateExpense <= end)).Список();

вид возврата(ExpenseDetails);
}

Поскольку вы использовали DateTime?, ваш запрос работает без параметров. И теперь ваш код будет тоже. Поэтому просто вызовите его изначально и отправьте обратно со значениями для фильтрации