我有一个包含列表属性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/

10-10 01:18