Как выполнить включение / отключение или скрытие / отображение в asp.net mvc 2 - PullRequest
1 голос
/ 28 июня 2011

Я передаю некоторые данные вида и сумку вида на вид через контроллер, ниже приведен фрагмент кода:

IProductRepository prodResp = new ProductRepository();
        Product getGarages = prodResp.GetDetailsForGarages((int)Session["EventID"]);
        Product getHelmets = prodResp.GetDetailsForHelmet((int)Session["EventID"]);
        if (getGarages == null)
        {

            ViewBag.Garages = null;
        }
            ViewBag.Garages = getGarages;
            int totalGarages = getGarages.QtyAvailable;
            var garages = Enumerable.Range(1, totalGarages).Select(x => new SelectListItem { Value = x.ToString(), Text = x.ToString() });
            ViewBag.GaragesDropDown = new SelectList(garages.ToList(), "Value", "Text");

            if (getHelmets == null)
            {
                ViewBag.helmets = null;
            }
            ViewBag.helmets = getHelmets;
        return View(booking);
    }

Вид

<% if (Convert.ToBoolean(ViewBag.boolSecondDriver))
                      {%>

                    <lable>Second Driver Availablity For this Event</lable><br />
                   <lable>Secondriver:</lable> <%: Html.TextBox("SecondDriver") %>
                    <br />
                   <lable>SecondriverPrice:</lable> <%: ViewBag.trackday.SecondDriverPrice %>
                    <br /><br />

                    <lable>Number of Helmets Available For this Event</lable><br /><br />
                    <lable>No of Helmets:</lable><%: ViewBag.helmets.QtyAvailable%><br />
                    <lable>Price per unit:</lable><%: ViewBag.helmets.UnitCost%> <br /><br />

                    <lable>Number of Garages Available For this Event</lable><br /><br />
                   <lable>No of Garages:</lable> <%: ViewBag.Garages.QtyAvailable%><br />
                    <lable>price per unit:</lable><%: ViewBag.Garages.UnitCost%>

                     <%}
                       else{ %> 


                      <lable>Second Driver Availablity For this Event</lable><br />
                   <lable>Free</lable>

                    <br /><br />

                    <lable>Number of Helmets Available For this Event</lable><br /><br />
                    <lable>No of Helmets:</lable><%: ViewBag.helmets.QtyAvailable%><br />
                    <lable>Price per unit:</lable><%: ViewBag.helmets.UnitCost%> <br /><br />

                    <lable>Number of Garages Available For this Event</lable><br /><br />
                   <lable>No of Garages:</lable> <%: ViewBag.Garages.QtyAvailable%><br />
                    <lable>price per unit:</lable><%: ViewBag.Garages.UnitCost%>

                      <%} %> 

У меня возникла проблемаЯ не могу скрыть или показать Viewbag, если значение viewbag.value равно нулю, тогда уважаемые viewbag.values ​​должны быть скрыты в представлении, поэтому я получаю ошибки: Невозможно выполнить привязку во время выполнения для пустой ссылки.Любые предложения или альтернативы будут высоко оценены.

Ответы [ 2 ]

1 голос
/ 28 июня 2011

Любые предложения или альтернативы будут высоко оценены.

Рассматривали ли вы возможность использования ViewModel ?

ViewBag - это хорошо, когда вы имеете делоотдельные поля и т. д., которые не гарантируют «модель», но у вас там много кода, я вижу такие существительные, как Шлем и Гараж - поэтому вы должны использовать ViewModel.

Тогда вы можете использовать:

<%: Html.DisplayFor(model => model.SecondDriver) %>

И если SecondDriver равно нулю, ничего не будет отображено.

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

Не знаю, как вы, но когда я занимаюсь разработкой MVC, моя цель № 1 - поддерживать чистоту моего представления.и без кода супа - то, что у вас есть в настоящее время.

1 голос
/ 28 июня 2011

Вы можете добавить другое свойство к ViewBag:

ViewBag.MyStuffIsNull = (MyStuff == null);

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

<% if (ViewBag.MyStuffIsNull) { %>
    // Do work
<% } %>
...