Как вернуть вид после действия контроллера mvc? - PullRequest
1 голос
/ 08 мая 2019

Я создал функцию для удаления определенной строки в моей таблице веб-сетки.Это работает нормально, но когда строка удалена, я хочу, чтобы мое представление обновилось и отображало фактические данные (после удаления строки).

Это то, что я получил до сих пор:

Представление веб-сеткивключая link-tag, который вызывает мой контроллер и отправляет с ним идентификатор параметра.

<div class="col-lg-12 d-flex align-items-stretch">
            @grid.Table(tableStyle: "table table-responsive table-striped table-bordered",
                columns: grid.Columns(
                  grid.Column(columnName: "ApiRedirectID", header: "ID", format:@<text><div class="" data-id="@item.ApiRedirectID" data-propertyname="ApiRedirectID">@item.ApiRedirectID</div></text>),
                  grid.Column(columnName: "ApiName", header: "Name", format:@<text><div class="edit" data-id="@item.ApiRedirectID" data-propertyname="ApiName">@item.ApiName</div></text>),
                  grid.Column(columnName: "Company.CompanyName", header: "Company Name", format:@<text><div class="edit" data-id="@item.ApiRedirectID" data-propertyname="Company.CompanyName">@item.Company.CompanyName</div></text>),
                  grid.Column(columnName: "ApiURL2", header: "URL", format:@<text><div class="edit" data-id="@item.ApiRedirectID" data-propertyname="ApiURL2">@item.ApiURL2</div></text>),
                  grid.Column(columnName: "Delete", header: " ", format:@<a href="DeleteRow/@item.ApiRedirectID" class="display delete-btn"><span class="glyphicon glyphicon-remove" style="color:red;"></span></a>)
          )
     )

</div>

Контроллер, который обрабатывает удаляемую часть:

public ActionResult DeleteRow(int id)
    {
        var status = false;
        var message = "";

        using (ConcurrentDBEntities db = new ConcurrentDBEntities())
        {
            var data = db.ApiRedirects.Find(id);
            if (data != null)
            {
                db.ApiRedirects.Remove(data);
                db.SaveChanges();
                status = true;
            }
            else
            {
                message = "Error!";
            }
            var response = new { id = id, status = status, message = message };
            JObject o = JObject.FromObject(response);
            return Content(o.ToString());
   }

Этот код работает нормально, но когда я удаляю строкувозвращается следующее:

enter image description here

Вместо этого я просто хочу, чтобы мое представление с обновленной таблицей веб-сетки было возвращено.

Надеюськаждый может помочь!

Ответы [ 2 ]

1 голос
/ 08 мая 2019

вместо

return Content(o.ToString());

Пожалуйста, используйте ( Если ваше действие по перечислению всех объектов называется Index ):

return RedirectToAction("Index", new { id = id, status = status, message = message });

И в вашем действии Index создайте параметры:

public ActionResult Index(int id = 0, int status = 0, string message = "") {}

Вы можете использовать autoscaffolding build в Visual Studio для автоматического выполнения CRUD, а затем просто настроить его.

1 голос
/ 08 мая 2019
    JObject o = JObject.FromObject(response);
    return Content(o.ToString());

Вместо возврата объекта Json вы должны вернуть представление.Json - это просто коллекция с данными.

Пример: return View("~/Views/SpecificView.cshtml")

Вы должны предоставить данные с помощью specificViewModel -> модель представления

...