2012-11-16 52 views
2

我想實現我的視圖中的CheckBoxList和獲取列表複選框值的選擇列表。的CheckBoxList在Asp.Net MVC4

我試過的例子,從這個link,但我不能讓所選擇的檢查列表項。

我查看

@foreach (var item in Model) 
{ 
    <tr> 
     <td align="center" class="Text_nocolor singleCheckbox"> 
      <input type="checkbox" class="checkbox" value="@item.ProductID" name="selectedObjects"/> 
      @Html.HiddenFor(modelItem => item.ProductName) 
     </td> 
     <td align="center" class="Text_nocolor" id="myimage"> 
      <img src="@Url.Content(item.Imageurl)" width="40px" height="40px" title="@item.ProductName" alt="Product" class="myimage" style="border-style:none;"/> 
     </td> 
     <td align="left" class="Text_nocolor"> 
      @Html.DisplayFor(modelItem => item.ProductName) 
     </td> 
    </tr> 
} 
@Html.ActionLink(" ", "Checkout", new { controller = "Checkout", UserID = Request.QueryString["UserID"], Partnerid = Request.QueryString["Partnerid"] }, new { @class = "btnCheckout" }) 

控制器代碼(指數):

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["DBConnection"].ConnectionString); 
public IList<CartModel> GetCartDetails(string id, string partnerid) 
{ 
    List<CartModel> CartDetails = new List<CartModel>(); 
    { 
     con.Open(); 
     SqlCommand cmd = new SqlCommand("select * from tablename where [User ID]='" + id + "' and [Partner ID]='" + partnerid + "'", con); 
     SqlDataAdapter da = new SqlDataAdapter(cmd); 
     DataTable dt = new DataTable(); 
     da.Fill(dt); 
     if (dt.Rows.Count > 0) 
     { 
      for (int i = 0; i < dt.Rows.Count; i++) 
      { 
       CartModel cartInfo = new CartModel(); 
       cartInfo.ProductName = dt.Rows[i]["Product Name"].ToString(); 
       cartInfo.Imageurl = "~/Handler.ashx?Pid=" + dt.Rows[i]["Product ID"].ToString() + "&Imgid=1&Partnerid=" + partnerid; 
       CartDetails.Add(cartInfo); 
      } 
     } 
     con.Close(); 
    } 
    return CartDetails; 
} 

public ActionResult Index() 
{ 
    id = Request.QueryString["UserID"]; 
    partnerid = Request.QueryString["Partnerid"]; 
    IList<CartModel> objshop = new List<CartModel>(); 
    objshop = GetCartDetails(id, partnerid); 
    ViewBag.Categories = objshop.ToList(); 
    return View(objshop.ToList()); 
} 

public ActionResult Checkout(string id, string partnerid, int[] categories) 
{ 
    string id = Request.QueryString["UserID"]; 
    string partnerid = Request.QueryString["Partnerid"]; 
    //How to get the selected checked list items as a list. 
    return View(); 
} 

有什麼建議?

+0

你叫一個ASHX文件呈現在MVC項目的形象? – Shyju

+0

是的。它很好地顯示在我的頁面 – kk1076

+0

你也可以從一個動作方法返回一個圖像。但是,如果這對你最有效,堅持這一點。 – Shyju

回答

0

最後我得到這個通過的WebGrid獲得CheckBoxList的。

請參閱此博客 http://weblogs.asp.net/imranbaloch/archive/2011/09/13/webgrid-helper-with-check-all-checkboxes.aspx

@grid.GetHtmlWithSelectAllCheckBox(tableStyle: "webGrid", 
      headerStyle: "header", 
      checkBoxValue: "ProductID", 
      columns: grid.Columns(
      grid.Column(columnName: "", format: @<text><img src="@Url.Content(item.Imageurl)" class="image" alt="Image "/></text>, style: "txtalignleft"), 
      grid.Column(columnName: "ProductName", style: "txtalignleft"), 
      grid.Column(columnName: "Quantity", style: "txtcenter"), 
      grid.Column("Edit", " ", style: "txtalignleft", format: @<a href="@Url.Action("Index", "Cart", new { UserID = Request.QueryString["UserID"], partnerid = Request.QueryString["Partnerid"] })"><img 
       alt="edititem" style="vertical-align: middle; text-align: justify; border-style: none;" 
       height="17px" src="../../Images/edit.png" title="Edit" id="imgEdit" /></a>), 
      grid.Column(columnName: "Rate", style: "txtalign"), 
      grid.Column(columnName: "Price", style: "txtalign") 
    ))