我有2个模型类:
guard let url = URL(string: profileImageUrl) else { return }
URLSession.shared.dataTask(with: url) { (data, response, err) in
if let err = err { print("Failed to fetch the profile image:", err); return }
//check for response status here
guard let data = data else { return }
let image = UIImage(data: data)
DispatchQueue.main.async {
self.profileImage.image = image
}
}.resume()
}
提交表单时,除GroupSet外,所有字段均从public class ModelWithList
{
int Id { get; set; }
string Name { get; set; }
List<SetOfGroups> GroupSets { get; set; }
}
public class SetOfGroups
{
List<Groups> Groups { get; set; }
}
传递。
通常,对于不会传递的属性,我会使用ModelWithList
,但这不能通过自定义模型列表来完成。
答案 0 :(得分:2)
假设您具有以下模型设置:
public class ModelWithList {
int Id { get; set; }
string Name { get; set; }
List<SetOfGroups> GroupSets { get; set; }
}
public class SetOfGroups
{
public int GroupId { get; set; }
public string GroupName { get; set; }
}
然后,您可以使用for
循环来迭代GroupSets
并为每个数字类型/ string
/ DateTime
(包括Nullable<T>
)属性分配其索引它具有:
@model ModelWithList
@* other code *@
@for (int i = 0; i < Model.GroupSets.Count; i++)
{
@Html.HiddenFor(model => model.GroupSets[i].GroupId)
@Html.HiddenFor(model => model.GroupSets[i].GroupName)
}
接下来,假设您要移动SetOfGroups
属性并创建一个新列表:
public class SetOfGroups
{
List<Group> Groups { get; set; }
}
public class Group
{
public int GroupId { get; set; }
public string GroupName { get; set; }
}
然后,您应该添加另一个for
循环来绑定它们:
@model ModelWithList
@* other code *@
@for (int i = 0; i < Model.GroupSets.Count; i++)
{
@for (int j = 0; j < Model.GroupSets[i].Groups.Count; j++)
{
@Html.HiddenFor(model => model.GroupSets[i].Groups[j].GroupId)
@Html.HiddenFor(model => model.GroupSets[i].Groups[j].GroupName)
}
}
尽管可以像上面的示例一样将嵌套列表添加到视图中,但是呈现HTML帮助器的循环将变得更加复杂,应避免使用。
重要提示:
您不应将HiddenFor
分配给List<T>
,如下所示:
@Html.HiddenFor(model => model.GroupSets)
因为Razor隐式调用那个ToString()
对象的List<T>
方法,导致插入到value
属性的列表的完全限定名称,并且绑定将忽略它,因为{{1 }}不是GroupSets
属性:
string
相关问题: