How to perform enable/disbale or hide/unhide in asp.net mvc 2
我正在通过controller传递一些viewdata和view bag到视图,下面是代码片段:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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); } |
查看
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | <% 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.value的值为null,则无法隐藏或取消隐藏Viewbag,那么应将受尊重的viewbag.values隐藏在视图中,因此出现错误:无法在a上执行运行时绑定空引用。任何建议或替代方案将比x受到高度赞赏。
Any suggestions or alternatives will be highly appreciated thanx.
您是否考虑过使用ViewModel?
当处理单个字段等不需要"模型"的情况时,ViewBag很好,但是您那里有很多代码,我看到诸如Helmet和Garage之类的名词-因此您应该使用ViewModel。
然后您可以使用:
1 | <%: Html.DisplayFor(model => model.SecondDriver) %> |
如果
您可以为
不了解您,但是当我进行MVC开发时,我的第一目标是保持View整洁,并且没有代码汤-这是您当前拥有的。
您可以将另一个属性添加到
1 | ViewBag.MyStuffIsNull = (MyStuff == null); |
然后在您的视图中可以使用此属性测试是否为空:
1 2 3 | <% if (ViewBag.MyStuffIsNull) { %> // Do work <% } %> |