Я заселена с SelectList Программным с помощью SelectList Constructor (IEnumerable, String, String)Как правильно использовать HTML.DropDownList с Ajax вызовов для MVC
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");
И я использую структуру DropDownList:
@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 я пытался вернуть обновленную модель в основном АЯКС работы .. если выше примера были структурированы таким образом, чтобы функция успеха не выполнялась, и метод 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» является ActionResult Типа EmptyResult и отмечены [HttpPost], поэтому в основном это может сделать работу и не беспокоиться о реальном возвращении. НО !! функция успеха этого же вызова Ajax позволяет мне обновить вид с недавно скорректированных ViewModel ....
Мой atempt воспроизвести мои первоначальные результаты не удается, я вижу содержимое модели, но это не делают в представлении