我有一个MVC应用程序,它也使用Telerik控件。 View有以下Kendo下拉列表:
<%= Html.Kendo().DropDownList()
.Name("agents")
.DataTextField("Text")
.DataValueField("Value")
.Enable(Model.IsAdmin)
.DataSource(source =>
{
source.Read(read => read.Action("GetUsers", "Schedule"));
})
.Value(Model.SelectedUser)
.Events(e => e.Select("SelectionChanged"))
%GT;
当列表被更改时,它会触发事件SelectionChanged,它对控制器上的方法UpdateUser进行Ajax调用。
function SelectionChanged(e) {
var dataItem = this.dataItem(e.item.index());
var passeddata = dataItem.Value;
$.ajax({
url: '/Schedule/UpdateUser',
data: { user: passeddata },
success: function () {
}
});
var scheduler = $("#scheduler").data("kendoScheduler");
scheduler.dataSource.read();
}
在我的控制器上该方法更新模型并在会话中设置值,然后调用“计划操作”以重新加载视图。
public ActionResult UpdateUser(string user)
{
_taskService.SelectedUser = user;
Session["ScheduledUser"] = user;
return View("Schedule");
}
public ActionResult Schedule()
{
ModelState.Clear();
//Check to ensure the user is not logged out
try
{
if (string.IsNullOrEmpty(Session["LoggedInUser"].ToString()))
return RedirectToAction("LogOut", "Account");
}
catch (Exception) { RedirectToAction("LogOut", "Account"); }
var timeOffset = Session["TimeOffset"].ToString();
_taskService.TimeOffset = Convert.ToInt32(timeOffset);
//Set the last viewed schedule
_taskService.IsAdmin = Convert.ToBoolean(Session["IsAdmin"].ToString());
ViewData["PageName"] = "Schedule";
if (string.IsNullOrEmpty(_taskService.SelectedUser))
{
_taskService.SelectedUser = Session["LoggedInUser"].ToString();
}
_taskService.UserWorkgroups = GetLoggedOnUserWorkgroups(_taskService.SelectedUser);
Session["ScheduledUser"] = _taskService.SelectedUser;
MessageHandler.NewNote("Loading schedule for user: " + _taskService.SelectedUser);
UpdateModel(_taskService);
return View(_taskService);
}
我遇到的问题是在加载视图时会在我的模型上填充一个名为UserWorkgroups的条目并显示值:
<h4 style="color: #30068b; text-align: Center;">Workgroups: <%:Model.UserWorkgroups%></h4>
下拉菜单更改后,应更新新用户的工作组并修改视图上的显示。我已经完成了代码并且它正在触发Schedule()操作结果并填充正确的用户和工作组,但视图不会更改它显示原始值的工作组。
此处的任何帮助表示赞赏。