2016-04-15 97 views
0

我有一个ViewModel与“HasBeenShipped”这是一个布尔值,如何在我的控制器将我发送到视图为;C#传递布尔值作为消息

如果(hasbeenshipped = FALSE)

我的消息,我想发送到视图 其他 订单已发货

并在视图我将如何显示这些吗? 可能与一个viewbag我想?

这里是我的控制器

public ActionResult Index() 
{ 
    string currentUser = this.User.Identity.GetUserName(); 

    List<T_shirt_Company_v3.ViewModels.MyOrdersViewModel> list = (from o in new TshirtStoreDB().Orders 
      .Where(o => o.Username == currentUser) 
      .OrderBy(o => o.OrderDate) 
      .Select(o => new MyOrdersViewModel() 
      { 
       OrderId = o.OrderId, 
       Address = o.Address, 
       FirstName = o.FirstName, 
       LastName = o.LastName, 
       City = o.City, 
       OrderDate = o.OrderDate, 
       PostalCode = o.PostalCode, 
       Total = o.Total, 
       HasBeenShipped = o.HasBeenShipped, 
       Details = (from d in o.OrderDetails 
          select new MyOrderDetails 
          { 
           Colour = d.Product.Colour, 
           Quantity = d.Quantity, 
           Title = d.Product.Title, 
           UnitPrice = d.UnitPrice 
          }).ToList() 
      }).ToList()select o).ToList(); 


    //ViewBag.ShippedMessage = HasBeenShipped ? "blah" : "not shipped"; 


    return View(list); 
+0

如果(HasBeenShipped){ViewBag.Message = “... ”}其他{ViewBag.Message =“ ...”}' –

+0

但我添加到我的视图模型控制器@StephenMuecke –

+0

见德鲁的答案。 –

回答

3

这应该工作:

View.cshtml

@model List<T_shirt_Company_v3.ViewModels.MyOrdersViewModel> 

@foreach (var item in Model) 
{ 
    <span>@(item.HasBeenShipped ? "..." : "...")</span> 
} 

无需使用ViewBag或perh aps只有在消息本身必须从外部源加载时,这应该在控制器中完成。

+0

我试试看! –

+0

我比较喜欢使用ViewBag – Haris

+0

这个工作很好!非常感谢 –

1

在你的控制器使用ViewBag。如

ViewBag.ShippedMessage = list.Where(w=>w.HasBeenShipped).Any() ? "blah" : "not shipped"; 

然后在你的观点,因为视图模型包含HasBeenShipped,您可以访问该属性

<p>@ViewBag.ShippedMessage</p> 
+0

我已经更新了我的问题与控制器,这种方法仍然工作,因为我得到的错误说HasBeenShipped不在那里@drew –

+0

已更新我的答案根据新的代码示例 – drew