Как это сделать, если заявление в MVC EF - PullRequest
0 голосов
/ 30 апреля 2018

Эй, я уверен, что это простой вопрос, но я совершенно новичок в MVC EF. У меня есть мнение, что занимает 3 входа. 2 являются датами, а другой - идентификатором катания на американских горках, который называется «ID». Если все входные данные заполнены, это дает вам количество гостей, которые проехали эту конкретную поездку. Если идентификатор НЕДЕЙСТВИТЕЛЕН, тогда он выдает самую популярную поездку и количество гостей, которые проехали эту конкретную поездку. Моя проблема в том, как получить правильное предложение. Прямо сейчас предложение говорит: «Количество гостей в данном диапазоне дат было», но проблема в том, что оно говорит то же самое, когда оно нулевое. Так и написано «Количество гостей в заданном диапазоне дат 5 7». Где 5 - самая популярная поездка, а 7 - количество гостей. Я предпочитаю сказать, что «самая популярная поездка была 5, и у нее было 7 гостей». Итак, в основном, что я спрашиваю, есть ли какой-то тип оператора If-else, который я могу использовать в представлении, чтобы получить правильное предложение? Ниже мой код для вида и контроллера

@model IEnumerable<ThemeParkManagementSystem.Models.RideCount>

@{
    ViewBag.Title = "Index";
}

<h2>Reports</h2>

<p>
    @using (Html.BeginForm("Index", "Reports", FormMethod.Get))
    {
        <text> Date 1 </text>
        @Html.TextBox("date1")
        <text> Date 2 </text>
        @Html.TextBox("date2")
        <text> Ride ID </text>
        @Html.TextBox("id")<input type="submit" value="Search" />
    }
</p>
<table>
    <tr>

        <th>
            <text>The number of guests in the given date range for </text> @ViewData["RideID"] @ViewData["GuestCount"]
        </th>
    </tr>
</table> 

private tpdatabaseEntities db = new tpdatabaseEntities();
public ActionResult Index(DateTime? date1, DateTime? date2, int? id)
{

    if (id == null)
    {
        Nullable<int> popularRideID = db.topRides(date1, date2).ToList<Nullable<int>>().FirstOrDefault();

        var popularID = popularRideID;

        DateTime? d1 = date1;
        DateTime? d2 = date2;
        Nullable<int> numOfGuest = db.Guestcount(d1, d2, popularID).ToList<Nullable<int>>().FirstOrDefault();
        var guestCount = numOfGuest.Value;

        ViewData["RideID"] = popularID;
        ViewData["GuestCount"] = numOfGuest;


        return View();

    }
    else
    {
        Nullable<int> countList = db.RideCount(date1, date2, id).ToList<Nullable<int>>().FirstOrDefault();
        var rideCount = countList.Value;
        ViewData["RideCount"] = rideCount;
    }
    return View();
}

output when the ID is NULL

1 Ответ

0 голосов
/ 30 апреля 2018

Я согласен с @Steve в комментариях, потому что, вероятно, разумнее оставить эту логику в контроллере. Однако, поскольку вы новичок в MVC EF, возможно, это решение поможет вам в другом сценарии. Поскольку вы просто возвращаете одно значение из поиска, вам не нужно использовать модель IEnumerable.

Если вы используете модель типа ThemeParkManagementSystem.Models.RideCount, это даст вам доступ к ее значениям в представлении, а затем вы можете использовать простой оператор if, как показано в приведенном ниже коде.

Не самое оптимальное решение, но может пригодиться в будущих сценариях.

    @model ThemeParkManagementSystem.Models.RideCount

        @{
            ViewBag.Title = "Index";
        }

        <h2>Reports</h2>

        <p>
            @using (Html.BeginForm("Index", "Reports", FormMethod.Get))
            {
                <text> Date 1 </text>
                @Html.TextBox("date1")
                <text> Date 2 </text>
                @Html.TextBox("date2")
                <text> Ride ID </text>
                @Html.TextBox("id")<input type="submit" value="Search" />
            }
        </p>
        <table>
            <tr>

                <th>
        @if (model.id==null){
                    <text>The number of guests in the given date range for </text> @ViewData["RideID"] @ViewData["GuestCount"]
        }
        else{
            Other text value
        }

                </th>
            </tr>
        </table> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...