2012-08-01 163 views
0

當我在視圖中刪除webgrid和layout = null時,其執行和客戶端驗證消息正在顯示......但是當我使用layout = nlll和Webgrid執行頁面時,它顯示下面的錯誤「數據源必須是結合之前可以進行此操作」在mvc3剃鬚刀中執行頁面時如何隱藏webgrid?

控制器:

[AcceptVerbs(HttpVerbs.Get)] 
     public ActionResult Display() 
     { 
       return View(); 
     } 

[AcceptVerbs(HttpVerbs.Post)] 
     public ActionResult Display(string brandname) 
     { 

      ShoppingClass s = new ShoppingClass(); 

      var ob= s.Searching(brandname); 

      return View(ob); 

     } 

觀點:

@model List<ShoppingCart.Models.ShoppingClass> 
@{ 
    ViewBag.Title = "Display"; 
     Layout = null; 
} 

@{ 
    var grid = new WebGrid(source: Model, defaultSort: "Drug_Code", rowsPerPage: 20); 
} 


<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script> 




     @using (Html.BeginForm(null, null, FormMethod.Post)) 
     { 
      for (int i = 0; i < 1; i++) 
      { 
     @* 
      <table><tr><td> @Html.Label("BrandName")</td> 
      <td>@Html.TextBox("BrandName")<div>@Html.ValidationMessage("BrandName")</div></td> 
      <td><input type="submit" value="Search" name="Search" /></td></tr></table>*@ 


      <table><tr><td> @Html.LabelFor(o => o[i].BrandName)</td> 
      <td>@Html.TextBoxFor(o => o[i].BrandName)<div>@Html.ValidationMessageFor(o => o[i].BrandName)</div></td> 
      <td><input type="submit" value="Search" name="Search" /></td></tr></table> 


      } 

     } 

    <div id="grid"> 
    @grid.GetHtml(tableStyle: "listing-border", headerStyle: "gridhead", footerStyle: "paging", rowStyle: "td-dark", alternatingRowStyle: "td-light", 
     columns: grid.Columns(
        grid.Column("GenericName", format: @<text>@item.GenericName</text>), 
        grid.Column("BrandName", format: @<text>@item.BrandName</text>), 
        grid.Column("Purchaseqty", format: @<text>@item.Purchaseqty</text>), 
        grid.Column("Purchaseprice", format: @<text>@item.Purchaseprice</text>), 
        grid.Column("Drug_Code", format: @<text>@item.Drug_Code</text>), 
        grid.Column(header: "", format: (item) => Ajax.ActionLink("Add to Cart", "ADDTOCART", 
        new { brandname = @item.BrandName, purchaseqty = @item.Purchaseqty, drugcode = @item.Drug_Code }, new AjaxOptions { HttpMethod = "Post", OnSuccess = "ADDTOCART" })) 

                           ) 
                           ) 
</div> 
+0

是什麼'。搜索()'返回?一個'List',?? – Yasser 2012-08-01 09:21:35

+0

搜索是在類中寫入的函數並將該值作爲列表傳遞給該函數 – Sham 2012-08-01 09:24:09

+0

您的函數將返回一個'List '這個禮貌? – Yasser 2012-08-01 09:45:52

回答

0

如果要隱藏網格如果模型爲空,那麼你可以把一個if語句一世n檢查模型是否爲空...即。

if (model != null) 
{ 
    // Make and populate grid here 
}