我有一个以下的视图模型,它将被我正在开发的搜索控件使用。
最后,搜索类别视图模型具有以下结构:
当我提交搜索请求时,SearchLocationViewModel将带有提交的参数,但是SearchCategoriesViewModel为空(不为null)。
以下是我的SearchCategoryViewModel的编辑器模板:
我使用以下视图生成搜索控件:
我最终得到了以下标记:
我怀疑是由于生成的标记错误导致参数无法传递。你们之中有人尝试从复杂对象生成部分视图吗?我不想传递IEnumerable,我宁愿将其封装在一个单独的类中,以便在未来可以扩展/删除它。
谢谢。
public class SearchViewModel
{
public SearchViewModel()
{
SearchLocation = new SearchLocationViewModel();
SearchCategories = new SearchCategoriesViewModel();
}
public SearchLocationViewModel SearchLocation { get; set; }
public SearchCategoriesViewModel SearchCategories { get; set; }
}
现在,SearchCategoriesViewModel具有以下结构:
public class SearchCategoriesViewModel
{
[Display(Name = "Categories")]
public IList<SearchCategoryViewModel> Categories { get; set; }
public SearchCategoriesViewModel()
{
Categories = new List<SearchCategoryViewModel>();
}
}
最后,搜索类别视图模型具有以下结构:
public class SearchCategoryViewModel
{
[Required]
[Display(Name="Id")]
public int Id { get; set; }
[Display(Name="Name")]
public String Name { get; set; }
public bool IsSelected { get; set; }
}
当我提交搜索请求时,SearchLocationViewModel将带有提交的参数,但是SearchCategoriesViewModel为空(不为null)。
以下是我的SearchCategoryViewModel的编辑器模板:
@model MyDLL.WebUI.Models.SearchCategoriesViewModel
@foreach (var c in Model.Categories)
{
@Html.Label(c.Name);
@Html.CheckBox(c.Name,c.IsSelected);
}
我使用以下视图生成搜索控件:
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<div id="search">
@Html.EditorFor(m => m.SearchCategories, "SearchCategory")
@Html.EditorFor(m => m.SearchLocation, "SearchLocation")
</div>
<p>
<input type="submit" value="Create" />
</p>
}
我最终得到了以下标记:
我最终得到了以下标记:
<h2>Search</h2>
<form action="/Settings/Search" method="post">
<label for="SearchCategories_Professional">Professional</label>
<input id="SearchCategories_Professional" name="SearchCategories.Professional" type="checkbox" value="true" />
<input name="SearchCategories.Professional" type="hidden" value="false" />
<label for="SearchCategories_Associate">Associate</label><input id="SearchCategories_Associate" name="SearchCategories.Associate" type="checkbox" value="true" />
<input name="SearchCategories.Associate" type="hidden" value="false" />
<p>
<input type="submit" value="Create" />
</p>
</form>
我怀疑是由于生成的标记错误导致参数无法传递。你们之中有人尝试从复杂对象生成部分视图吗?我不想传递IEnumerable,我宁愿将其封装在一个单独的类中,以便在未来可以扩展/删除它。
谢谢。
SearchCategories.Associate
有关,因为DefaultModelBinder在SearchCategoryViewModel
中找不到属性Associate
。解决方案可能取决于您的部分视图。 - counsellorben