2014-05-05 72 views
3

我想通過從控制器傳遞到View來顯示字符串消息通過字符串變量。如何從控制器傳遞字符串消息在MVC中查看

這是我的控制器代碼:

public ActionResult SearchProduct(string SearchString) 
     { 

      FlipcartDBContextEntities db = new FlipcartDBContextEntities(); 
      string noResult="Search Result Not Found"; 
      var products = from p in db.Products select p; 

      if (!String.IsNullOrEmpty(SearchString)) 
      { 
       products = products.Where(s => s.ProductName.StartsWith(SearchString)); 
       return View(products); 

      } 

      else 
      { 

       return View(noResult); 
      } 

// 在這裏,我要顯示的字符串值EI消息到視圖。

請指導我。 是新來的MVC

回答

8

更改您的控制器:

public ActionResult SearchProduct(string SearchString) 
    { 

     FlipcartDBContextEntities db = new FlipcartDBContextEntities(); 
     string noResult="Search Result Not Found"; 
     var products = from p in db.Products select p; 

     if (!String.IsNullOrEmpty(SearchString)) 
     { 
      products = products.Where(s => s.ProductName.StartsWith(SearchString)); 
      return View(products.ToList()); 

     } 

     else 
     { 
      ViewBag.Message = noResult; 
      return View(new List,Product>()); 
     } 

您可以從服務器通過ViewBag將消息傳遞給客戶端。請注意,您必須從if/else的兩側返回相同的API,因此您無法一次傳遞一個產品列表,而是一個字符串傳遞給另一個。在你看來:

if (ViewBag.Message != null) 
{ 
    <span>@ViewBag.Message</span> 
} 

還是不要做任何的這一點,只是把消息在基於具有列表中的項目產品清單存在的觀點。

// Model = Products returned; must make sure list returned is not null 
if (Model.Count > 0) 
{ 
    <span>Search Result not found</span> 
} 

甚至作爲另一個選項,您可以創建一個模型類:

public class SearchModel 
{ 
    public List<Product> Products { get; set; } 

    public string EmptyMessage { get; set; } 
} 

,並通過您的視圖方法返回此:

//if 
return View(new SearchModel { Products = products }); 
//else 
return View(new SearchModel { EmptyMessage = "Search result Not Found" }); 
+0

視圖模型(最後一個例子),恕我直言,是最好的選擇。將所有視圖的需求傳遞給一個對象,當你閱讀代碼時,其意圖非常清晰。 – HitLikeAHammer

+0

謝謝@Brain ..its解決:) – user3172140

相關問題