我有一个包含列表属性List<EducationalBackground> EducationalBackground
的模型,并且以剃须刀的形式我希望用户输入多个机构。
模型
public class Application
{
...
[Required(ErrorMessage = "Required Field")]
public List<EducationalBackground> EducationalBackground { get; set; }
...
public Application()
{
...
EducationalBackground = new List<Library.EducationalBackground>();
...
}
}
这是课程:
public class EducationalBackground
{
public string InstituteName { get; set; }
...
}
在剃刀视图中,我正在尝试这样
@Html.TextBoxFor(m => m.EducationalBackground[0].InstituteName, new { @class = "form-control" })
但显然它不起作用,因为列表(
EducationalBackground
)为空。用户将具有“添加新机构”按钮,因此初始列表大小未知
我如何正确地做到这一点?
更新找到了我的解决方案。在答案部分中查找我的帖子
最佳答案
我不太确定您的视图用于编辑EducationalBackground
列表或添加新列表的目的是什么。如果要编辑它们,则显然需要从数据库之类的地方获取它们。
编辑大小写:
在动作中,您有:
EducationalBackground = new List<Library.EducationalBackground>
{
new EducationalBackground(...),
new EducationalBackground(...),
new EducationalBackground(...),
..... //How many you want
}
在视图中,您具有:
@foreach(var educationbackground in Model)
{
@Html.TextBoxFor(m => educationbackground.InstituteName, new { @class = "form-control" })
}
添加新的。
如果您想添加新的,并且已经回答,则可以使用简单的html语法来实现:
如果您不知道要添加的列表大小,则可以选择jQuery或angularjs之类的另一种方法:
<script type="text/javascript">
$(document).ready(function(){
var size = 0;
$("#btnAdd").click(function(){
$(".someDiv").append("<input type='text' name='EducationalBackground["+size+"].InstituteName' class='form-control' />");
size++;
})
})
</script>
编辑小提琴
看看这个小提琴here
关于c# - 如何在ASP.Net MVC C#中的表单发布上绑定(bind)List <T>,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44462618/