Mvc views页面中需要通过Checkbox选择批量删除,查了一下资料发现checkbox有点诡异,但问题还是解决了。
view页面部分代码:
<tr class="Row_1" onmouseover="c=this.className;this.className='Row_Focus';" onmouseout="this.className=c;">
<td class="fontC">
<input type="checkbox" id="CheckData" name="CheckData" value="<%=Html.Encode(item.ID) %>" />
</td>
…………………………………………
<asp:Content ID="BO" ContentPlaceHolderID="BatchOperations" runat="server" >
<label for="CheckAllHander"><input id="CheckAllHander" type="checkbox" onclick="selectAll(this);" />全选/清除</label>
<input type="submit" id="BtnDeleteHander" name="BtnDeleteHander" class="inputBtn" value="删除" onclick="return Delete();" />
</asp:Content>
通过js判断是否有选择项。
接下来 Controller里:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(FormCollection collection)
{
List<string> list = new List<string>();
string Pattern ="[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}";
foreach (var item in System.Text.RegularExpressions.Regex.Matches(collection.GetValue("CheckData").AttemptedValue, Pattern))
{
list.Add(item.ToString());
}
if (list.Count > 0)
{
for (int i = 0; i < list.Count; i++)
{
Guid id = new Guid(list[i].ToString());
Easy_ em = easy.FindSing(id);
if (em == null)
return View("Error");
else
{
try
{
easy.Delete(em);
easy.Save();
}
catch(Exception ex)
{
return View("Error");
}
}
}
}
return RedirectToAction("Index");
}
需要的Models里:
public Easy_ FindSing(Guid id)
{
return db.Easy_.SingleOrDefault(d => d.ID == id);
}
/// <summary>
/// 添加及修改的方法
/// </summary>
/// <value>Easy_</value>
public void Add(Easy_ item)
{
db.Easy_.InsertOnSubmit(item);
}
/// <summary>
/// 删除的方法
/// </summary>
/// <value>Easy_</value>
public void Delete(Easy_item)
{
db.Easy_.DeleteOnSubmit(item);
}
/// <summary>
/// 保存的方法
/// </summary>
/// <value>Easy_</value>
public void Save()
{
db.SubmitChanges();
}