如何 return 在 mvc 控制器操作后查看?
How to return view after mvc controller action?
我创建了删除 webgrid 中特定行的功能 table。这工作正常但是当删除行时我希望我的视图得到刷新并显示实际数据(删除行后)。
这是我目前得到的:
Webgrid 视图包括 link-调用我的控制器并发送参数 ID 的标签。
<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());
}
此代码工作正常,但当我删除一行时,将返回以下内容:
而不是这个,我只想返回我更新的 webgrid table 的视图。
希望大家帮帮忙!
JObject o = JObject.FromObject(response);
return Content(o.ToString());
您应该 return 一个视图,而不是 return 一个 Json 对象。
Json只是一个有数据的集合。
示例:return View("~/Views/SpecificView.cshtml")
您应该使用特定的 ViewModel 提供数据 --> 视图的模型
而不是
return Content(o.ToString());
请使用(如果您列出所有对象的操作称为索引):
return RedirectToAction("Index", new { id = id, status = status, message = message });
并在您的 Index 操作中创建参数:
public ActionResult Index(int id = 0, int status = 0, string message = "") {}
您可以使用 autoscaffolding 内置 Visual Studio 自动执行 CRUD,然后自定义它。
我创建了删除 webgrid 中特定行的功能 table。这工作正常但是当删除行时我希望我的视图得到刷新并显示实际数据(删除行后)。
这是我目前得到的:
Webgrid 视图包括 link-调用我的控制器并发送参数 ID 的标签。
<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());
}
此代码工作正常,但当我删除一行时,将返回以下内容:
而不是这个,我只想返回我更新的 webgrid table 的视图。
希望大家帮帮忙!
JObject o = JObject.FromObject(response);
return Content(o.ToString());
您应该 return 一个视图,而不是 return 一个 Json 对象。 Json只是一个有数据的集合。
示例:return View("~/Views/SpecificView.cshtml")
您应该使用特定的 ViewModel 提供数据 --> 视图的模型
而不是
return Content(o.ToString());
请使用(如果您列出所有对象的操作称为索引):
return RedirectToAction("Index", new { id = id, status = status, message = message });
并在您的 Index 操作中创建参数:
public ActionResult Index(int id = 0, int status = 0, string message = "") {}
您可以使用 autoscaffolding 内置 Visual Studio 自动执行 CRUD,然后自定义它。