2015-04-08 3 views
2

У меня есть файл _LayoutOnecs.html и View Loads с ним в renderbody и отображает список записей в таблице. в одной из колонок таблицы У меня есть значок Удалить при щелчке она переходит в контроллер и удаляет запись из базы данных после того, как запись будет удалена вид должен быть обновлена, чтобы я вернул действие на контроллер, который извлекает все записиКак обновить представление в MVC

public ActionResult GetAdvertisementDetails() 
{ 
    var advertisementList = new AdvertisementManager().GetAdvertisementDetails();  
    return View("AdvertisementDetails", advertisementList); 
} 

public ActionResult DeleteAdvertisementDetails(int id) 
{ 
    new AdvertisementManager().DeleteAdvertisementDetails(id); 
    return RedirectToAction("GetAdvertisementDetails", "Advertisement"); 
} 

после удаления. Это делается для GetAdvertisecontroller и возврата, но запись Deleted находится там в таблице, если я обновляю страницу, нажав F5, запись удаляется из таблицы. Как я Refresh автоматически, когда запись будет удалена

View Code

<div class="col-md-12 main_table"> 
    <div class="table-responsive"> 
     <table class="table" id="hom_table"> 
      <tr> 
       <th>Advertisement Name</th> 
       <th>Link</th> 
       <th>Start Date</th> 
       <th>End Date</th> 
       <th width="100">Action</th> 
      </tr> 
      @foreach (var advertisements in Model) 
      { 
       <tr> 
        <td> @advertisements.Description</td> 
        <td> @advertisements.ImageUrl</td> 
        <td> @advertisements.StartDate</td> 
        <td> @advertisements.EndDate</td> 
        <td> 
         <a onclick="EditadvertisementDetails(@advertisements.AdvertisementId)"> 
          <i class=" pull_Advt_details tbl_edit_btn fa fa-edit Editbutton"></i> 
         </a> 
         <a id="Deladvertisement" onclick="Deleteadvertisement(@advertisements.AdvertisementId)" > 
          <i class="tbl_del_btn fa fa-trash"></i> 
         </a> 
        </td> 
       </tr> 
      } 
     </table> 
    </div> 
    <!-- Responsive main table Ends --> 
</div> 
+0

Обеспечить реализацию GetAdvertisementDetails(), а также просмотреть код. –

+0

Последний (теперь удаленный) вопрос указал, что вы использовали ajax для вызова этого метода - это все еще так? –

+0

Я использую ajax для вызова метода delete, например this..функция Deleteadvertisement (AdvertisementId) { GetServerData ('Advertisement/DeleteAdvertisementDetails /' + AdvertisementId, null, null); } –

ответ

2

Ajax называет пребывание на той же странице. Ваше использование return RedirectToAction("GetAdvertisementDetails", "Advertisement"); в методе контроллера игнорируется. Ее также нет необходимости для перенаправления, так как вы можете просто удалить строку из таблицы

Изменить HTML для (обратите внимание, удалить атрибут id который недействительная HTML):

<a class="delete" data-id="@advertisements.AdvertisementId> 
    <i class="tbl_del_btn fa fa-trash"></i> 
</a> 

и использовать следующий скрипт для вызова метод контроллера и удалить запись

var url = '@Url.Action("DeleteAdvertisementDetails", "Advertisement")'; 
$('.delete').click(function() { 
    var row = $(this).closest('tr'); 
    $.post(url, { id: $(this).data('id') }, function(response) { 
    if(response) { 
     row.remove(); 
    } 
    }).fail(function (response) { 
    // display error message? 
    }); 
}); 

и модифицировать контроллер

[HttpPost] 
public JsonResult DeleteAdvertisementDetails(int id) 
{ 
    new AdvertisementManager().DeleteAdvertisementDetails(id); 
    return Json(true); 
} 
+0

Спасибо за ответ, но в консоли я получаю сообщение об ошибке http: // localhost/Membership/Advertisement/@Url.Action (% 22DeleteAdvertisementDetails% 22,% 20% 22Реклама% 22) @Stephen Muecke –

+0

Какая ошибка вы получаете? (И что такое «Членство»? - вы используете области?) –

+0

http: // localhost/Membership/Advertisement/@Url.Action (% 22DeleteAdvertisementDetails% 22,% 20% 22Advertisement% 22) Не удалось загрузить ресурс: сервер ответил статусом 404 (Not Найдено) –

Смежные вопросы