我有一个MVC视图模型,如下所示:
public class DirectorySearchModel
{
[Display(Name = "First name contains")]
public string FirstName { get; set; }
[Display(Name = "Last name contains")]
public string LastName { get; set; }
public CountriesCollection Countries { get; set; }
public IEnumerable<Country> SelectedCountries { get; set; }
public IEnumerable<Country> AllCountries { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
CountriesCollection对象(第9行)如下所示:
public class CountriesCollection
{
[Display(Name = "Countries")]
public int[] arrCountries { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在,我正在创建一个新的,空白的CountriesCollection实例,然后将其添加到DirectorySearchModel视图模型的空白实例中,然后将其全部序列化为Knockout.js的javascript视图模型:
{
"FirstName":null,
"LastName":null,
"Countries":{"arrCountries":[]},
"SelectedCountries":[{"RelationshipManager":{},"CountryId":1,"CountryName":"UK"},{"RelationshipManager":{},"CountryId":2,"CountryName":"France"},{"RelationshipManager":{},"CountryId":3,"CountryName":"Spain"}],
"AllCountries":[{"RelationshipManager":{},"CountryId":1,"CountryName":"UK"},{"RelationshipManager":{},"CountryId":2,"CountryName":"France"},{"RelationshipManager":{},"CountryId":3,"CountryName":"Spain"}]
}
Run Code Online (Sandbox Code Playgroud)
我的复选框呈现为:<input checked="checked" data-bind="checked: Countries.arrCountries" …
asp.net-mvc asp.net-mvc-3 asp.net-mvc-2 knockout-mapping-plugin knockout.js
我有一个看起来像这样的Knockout.js视图模型:
"UserName":null,
"FirstName":null,
"LastName":null,
"Countries":{
"arrCountries":[]
}
Run Code Online (Sandbox Code Playgroud)
还有一组国家/地区复选框,所有这些都必须使用相同的data-bind值进行渲染(我使用这个自定义CheckBoxListFor帮助程序,它可以将自定义HTML应用于每个复选框,但每个复选框都是相同的自定义HTML.它需要一个列出的属性从我的剃刀视图模型中的每个可用国家创建复选框,然后根据另一个剃刀视图模型属性渲染一些标记).
复选框值是整数(1,2,3等),它是我想要放入arrCountries视图模型属性的那些整数.
以下是当前立即呈现复选框的方式:
<input checked="checked" data_bind="checked: ???" id="Countries.arrCountries107" name="Countries.arrCountries" type="checkbox" value="1"></input>
Run Code Online (Sandbox Code Playgroud)
我已经证明了使用viewModel.Countries.arrCountries.push(1);更新视图模型的概念(后面是一个警告,它让我计算arrCountries中的元素以证明push工作原理),但我似乎无法data-bind在复选框上获取HTML属性连线,以便在我发送push和remove命令时检查和取消选中.
任何帮助非常感谢!