>我使用 SelectList 构造函数(IEnumerable, String, String)以编程方式填充了一个 SelectList。
IEnumerable<Permission> ie_SelLstContentAvailPerms;
tmpLstPermissions = FilterAssignablePermissionsByRoleMgblty(p_iRoleId,vmRolePermAdmin.lstPermissionsSource);
//test Forcing Results in to IEnumerable format for Select list Constructor
ie_SelLstContentAvailPerms = tmpLstPermissions.ToList();
vmRolePermAdmin.selLstPermissionsSource = new SelectList(ie_SelLstContentAvailPerms, "PermissionId", "Name");
我使用下拉列表结构:
@Html.DropDownList("ddlAssignedRolePermissions", (Model.selLstCurrentRolePermissions), null, new { @id = "ddlAssignedRolePermissions", @size = "5", @onchange = "ddlAssignedRolePermissionsEvent(this)" })
我以前使用此结构有一个 ajax 调用,其成功方法是返回更新的模型----但其主体(Postify to AssignPermission(iUserID))正在根据下拉列表中选择的项目对视图模型执行工作
$.ajax({
url: "~/../../User/AssignPermission",
type: "POST",
data: $.postify({ "p_permId": optionSelectedPerm.value, "p_UserId": iUserId }),
cache: false,
success: function () {
ReloadUserPermissions();
},
error: function () {
// alert("FAIL"); //TODO ?
}
});
我试图为新页面复制此结构,但没有使用 Ajax 调用的成功结果方法,我一直在尝试在主要的 ajax 工作中返回更新的模型。 如果上面的示例以这种方式构建,则不会有成功函数,控制器 ActionResult 方法将返回更新的模型。 这是行不通的. 我在调试时在视图中看到数据(更新),但它没有更新视图......
我是否必须使用 Ajax 调用的成功函数才能更新视图?
<script type="text/javascript">
$(document).ready(function () {
var optionSelectedPerm;
var mvcTmpData_iCurrentRoleID;
});
function SelectedRole(p_lstRole) {
debugger;
mvcTmpData_iCurrentRoleID = $("#ddlSelectedRole").val();
$.ajax({
url: "~/../../AdminRoles/AdminRolePermissions",
type: "POST",
data: $.postify({ "p_nullRoleId": mvcTmpData_iCurrentRoleID }),
cache: false,
success: function () {
AjaxReloadRolePermissions();
},
error: function () {
},
});
function AjaxReloadRolePermissions() {
//alert("Current RoleID: " + mvcTmpData_iCurrentRoleID);
var url = '@Url.Action("ReloadRolePermissions", "AdminRoles", new { p_RoleId = "zReplaceRoleId" })';
window.location.href = url.replace('zReplaceRoleId', mvcTmpData_iCurrentRoleID);
}
}
</script>
请注意,为了完成第一个工作场景,Ajax 调用"AssignPermission"中引用的控制器方法是 EmptyResult 类型的 ActionResult 并标记为 [HttpPost],因此基本上它可以工作而不用担心真正的回报。但!!这个相同的 Ajax 调用的成功函数允许我使用新调整的视图模型更新视图。
我试图重现原始结果失败了,我看到了模型内容,但它没有在视图中呈现
如果有人关心它非常简单,Ajax 函数的主要工作不能调用更新视图的控制器操作。 但是,Ajax 成功调用可以肯定地调用控制器的 ActionResults 之一来更新视图,然后调用该视图中的相关部件,,,
DO WORK的ajax调用的主要部分中的控制器操作需要标记为EmptyResult & [HttpPost]
真正触发 ActionResult 以更新视图的控制器操作,就我而言,只返回视图和新修改的模型...... 并再次注意它由前面引用的 ajax 函数的成功函数调用 上面的最后一个代码发布几乎涵盖了所有内容