【发布时间】:2014-09-17 22:17:02
【问题描述】:
这几乎是我开发 MVC 的第三天,我希望这是一个简单的问题。基本上我在局部视图中有一个 WebGrid,它有一个通过控制器执行更新的列。
控制器随后成功返回更新后的局部视图,但它用结果替换整个页面,而不仅仅是局部视图。
这是部分视图:
@model Site.Models.UsersForCompanyModel
@{
ViewBag.Title = "Admin User Management Grid";
}
@{
var grid = new WebGrid(
Model.Users,
ajaxUpdateContainerId: "divUserGrid",
fieldNamePrefix: "gridItems_",
pageFieldName: "paging",
sortFieldName: "sortField"
);
grid.Pager(WebGridPagerModes.All);
var userColumns = new List<WebGridColumn>
{
new WebGridColumn {ColumnName = "Email", Header = "E-Mail", CanSort = true},
new WebGridColumn {Header = "Lock", Format = user => user.isAdmin ? Html.Raw("n/a") : Html.ActionLink(user.IsLocked ? "Unlock" : "Lock", "ToggleLock", new {userId = user.Id, companyId = Model.CompanyId}) },
};
<div id="divUserGrid">
@grid.GetHtml(
htmlAttributes: new { id = "userGrid" },
tableStyle: "table table-striped table-bordered",
columns: userColumns
)
</div>
}
...这是控制器代码:
public ActionResult GetUsersForCompany(string companyId)
{
using (var service = new ManagementService())
{
var model = GetUsersForCompany(companyId, service);
return PartialView("AdminUserManagement_Grid", model);
}
}
public ActionResult ToggleLock(string companyId, string userId)
{
using (var service = new ManagementService())
{
var user = service.GetUserById(userId);
service.LockUser(userId, !user.IsLocked);
return GetUsersForCompany(companyId);
}
}
用 ToggleLock() 返回的结果更新局部视图的最简单方法是什么?
有没有办法通过 Html.ActionLink 或 Ajax.ActionLink 以声明方式进行?
【问题讨论】:
标签: asp.net-mvc razor asp.net-mvc-5 webgrid