从 Asp.Net MVC 中的控制器更新模型 属性
Update Model property from Controller in Asp.Net MVC
我有一个 HTML dropdownList
当前显示来自模型的数据,现在对于某些操作我想更改 dropdownList
内容。我想如果我更新模型,它也会反映到视图中。下面是我的模型代码
ViewModel
public class CaseAssignmentRuleSetViewModel
{
public CaseAssignmentRuleSetViewModel()
{
}
public int id { get; set; }
public string name { get; set; }
public Dictionary<string, string> AssignmentUsers { get; set; }
}
因此,在 viewModel
中,它是 dictionary
的来源 dropdownList
,如下所示。
查看
<select name="assignmentTeam" class="form-control case-assignment-use-type-value2" placeholder="Select a User">
@foreach (string key in Model.AssignmentUsers.Keys)
{
<option value="@key">@Model.AssignmentUsers[key]</option>
}
</select>
最后,在一些操作之后,我使用 JQuery 函数将新列表返回到我的 Controller
方法,如下所示。
控制器
[HttpPost, Route("CaseAssignmentRuleSet/ListofAssignees", Name = "ListofAssignees")]
public List<string> SetListofAssignees(string [] listOfAssignedroles)
{
CaseAssignmentRuleViewModel caseAssignmentRuleViewModel = new CaseAssignmentRuleViewModel();
List<string> listOfAssignees = new List<string>();
if (listOfAssignedroles!= null)
{
listOfAssignees = new List<string>(listOfAssignedroles);
}
return listOfAssignees;
}
如何使用新的项目列表更新我的 dropdownList
视图?
所以当你说你正在使用 jquery 函数重新获取新列表时,我假设你正在做的是对你的控制器进行 ajax 调用。
如果是这样,那么在 ajax 调用的完成函数中,清除当前列表,然后遍历新列表并添加新选项:(伪代码)
$.ajax( '/CaseAssignmentRuleSet/ListofAssignee' )
.done(function(data) {
//get the select element, you should really add an ID to the element to select instead of name but whatever
var $el = $('[name=assignmentTeam]');
//clear the current select list options
$el.empty();
//iterate through your new options and add them to the select list
$.each(data, function(key,value) {
$el.append($("<option></option>").attr("value", value).text(value));
});
}).fail(function() {alert( "error" );}).always(function() {//alert( "complete" );});
我有一个 HTML dropdownList
当前显示来自模型的数据,现在对于某些操作我想更改 dropdownList
内容。我想如果我更新模型,它也会反映到视图中。下面是我的模型代码
ViewModel
public class CaseAssignmentRuleSetViewModel
{
public CaseAssignmentRuleSetViewModel()
{
}
public int id { get; set; }
public string name { get; set; }
public Dictionary<string, string> AssignmentUsers { get; set; }
}
因此,在 viewModel
中,它是 dictionary
的来源 dropdownList
,如下所示。
查看
<select name="assignmentTeam" class="form-control case-assignment-use-type-value2" placeholder="Select a User">
@foreach (string key in Model.AssignmentUsers.Keys)
{
<option value="@key">@Model.AssignmentUsers[key]</option>
}
</select>
最后,在一些操作之后,我使用 JQuery 函数将新列表返回到我的 Controller
方法,如下所示。
控制器
[HttpPost, Route("CaseAssignmentRuleSet/ListofAssignees", Name = "ListofAssignees")]
public List<string> SetListofAssignees(string [] listOfAssignedroles)
{
CaseAssignmentRuleViewModel caseAssignmentRuleViewModel = new CaseAssignmentRuleViewModel();
List<string> listOfAssignees = new List<string>();
if (listOfAssignedroles!= null)
{
listOfAssignees = new List<string>(listOfAssignedroles);
}
return listOfAssignees;
}
如何使用新的项目列表更新我的 dropdownList
视图?
所以当你说你正在使用 jquery 函数重新获取新列表时,我假设你正在做的是对你的控制器进行 ajax 调用。
如果是这样,那么在 ajax 调用的完成函数中,清除当前列表,然后遍历新列表并添加新选项:(伪代码)
$.ajax( '/CaseAssignmentRuleSet/ListofAssignee' )
.done(function(data) {
//get the select element, you should really add an ID to the element to select instead of name but whatever
var $el = $('[name=assignmentTeam]');
//clear the current select list options
$el.empty();
//iterate through your new options and add them to the select list
$.each(data, function(key,value) {
$el.append($("<option></option>").attr("value", value).text(value));
});
}).fail(function() {alert( "error" );}).always(function() {//alert( "complete" );});