0

的foreach我有列表頁顯示所有與它的名字從數據庫在asp.net mvc的列表動作圖像(PhotoList - 獲得)。在該視圖頁面(PhotoList.aspx)我創建了複選框來刪除多行。我要像下面動態創建複選框使用asp.net的MVC

第一頁場景展示在首列的複選框,並在第二列PhotoName,並就刪除選定的行下一個頁面按鈕,列表。 當選擇複選框並單擊刪除按鈕時,根據選擇將行從數據庫中刪除並返回相同的列表頁面。

我不明白在哪裏編寫代碼以及如何刪除代碼?

其迫切請幫助我..

<% foreach (var item in Model) { %> 
    <tr> 
     <td> 
      <input type="checkbox" name="deleteImage" value="<%= item.PhotoId %>"/> 
     </td> 
     <td> 
      <%= Html.ActionLink("Edit", "Edit", new { id=item.PhotoId }) %> 
     </td> 
     <td> 
      <%= Html.Encode(item.PhotoName) %> 
     </td> 
    </tr> 
<% } %> 
<input type="button" name="Delete" value="Delete Selected items"/>  

回答

0

的代碼刪除將在刪除了HttpPost動作被寫入。像下面的東西應該如果您正在使用myModel

[HttpPost] 
public ActionResult Delete(myModel deleteEntries) //This is the post-version of your Action that rendered the view..If it's Edit, then change the name to Edit 
{ 
    var deleteList = db.deleteEntries.where(d => d.checkBox == true).ToList(); 
    foreach (myList my in deleteList) 
    { 
     db.myList.Remove(my); // remember db should be your DbContext instace 
    } 
    db.SaveChanges(); 
} 

UPDATE

首先你需要做一個視圖模型,否則你無法識別哪些條目被檢查的缺失與複選框的工作有所幫助。

做一個VIEWMODE類像下面

using pratice3.Models; 
public class MyPhotoViewModel 
{ 
    public UserManagementDbEntities.tblPhoto TablePhoto { get; set; } 
    public bool checkBox { get; set; } 
} 

返回給你的觀點

[AcceptVerbs(HttpVerbs.Get)] 
public ActionResult PhotosList() 
{ 
    var viewModel = _datamodel.tblPhoto.Select(g => new MyPhotoViewModel 
            { 
             TablePhoto = g; 
             checkBox = false; 
            }).ToList();  
    return View(viewModel); 
} 

在查看,更改using語句,以反映IEnumerable<MyPhotoViewModel>並據此作出相應的改變。

然後,確定安置自己的動作像如下

[HttpPost] 
public ActionResult PhotosList(IEnumerable<MyPhotoViewModel> myPhotoList) 
{ 
    var deleteList = myPhotoList.where(d => d.checkBox == true).ToList(); 
    foreach (var deletePhoto in deleteList) 
    { 
     _datamodel.tblPhoto.DeleteObject(deletePhoto.TablePhoto); 
    } 
    db.SaveChanges(); 
} 
+0

什麼是 「基於myModel」?和db ...? – lakhani 2012-01-11 09:07:48

+0

我已經usermanagementEntitites爲模型實體和_datamodel作爲該對象並tblPhoto中的..表,我該怎麼辦? – lakhani 2012-01-11 09:09:22

+0

我可以知道「myModel」,「myList」和「db」究竟是什麼? – lakhani 2012-01-11 09:17:34

0

使用jQuery你可以做到這一點。

在點擊按鈕獲取的照片所有的ID,像這樣

var selected = new Array(); 
    $('name="deleteImage" input:checked').each(function() { 
     selected.push($(this).attr('id'))); 
    }); 
    var selectedIds = selected.join(','); 

現在就按一下按鈕,使Ajax調用服務器端的一些功能將接受這些ID,並從DB左右刪除。

$.ajax({ 
    url: '@Url.Action("DeleteRecord", "UserManage")', 
    data: 'ids=' + selectedIds + '&time=' + new Date(), //Date makes each call unique 
    success: function (data) { 
     //You can reload page 
    }, 
    error: function (data) { 
     //You can show error 
    } 
}); 

希望這會有所幫助。

+0

在selectedIds中,我是否會收到所有使用逗號詮釋列表選定的ID?和阿賈克斯caling insted我可以傳遞這個字符串的任何行動的控制器..? – lakhani 2012-01-11 10:21:00

+0

是的,你會得到逗號分隔的字符串。並且要將數據發佈到您的動作控制器,您需要創建模型,否則發出獲取請求非常容易。更新後的代碼,假設您有DeleteRecord函數在UserManageController中接受逗號分隔的字符串。 – 2012-01-11 10:49:32