将EditorFor绑定到字符串数组

时间:2014-10-20 17:05:26

标签: c# asp.net-mvc model-binding asp.net-mvc-viewmodel

尝试使用更复杂的视图模型但没有成功后,我开始使用viewmodel,如下所示:

public class CarteExpressViewModel
{
    public string[] LesEntrees;      
    public string[] LesPlats; 

    public CarteExpressViewModel()
    {
        LesEntrees = new string[]{ "", "", "", "", "", "" };
        LesPlats = new string[]{ "", "", "", "", "", "" };
    }
}

我在我的控制器的create方法中传递了viewModel

public ActionResult Create()
{
    CarteExpressViewModel carteExpressViewModel = new CarteExpressViewModel();
    return View(carteExpressViewModel);
}

问题是我可以看到输入值,如果我使用FormCollection作为我的Post创建方法的参数但是如果我使用viewmodel则一切都为null 我的观点是这样的:

@for (int i = 0; i < Model.LesEntrees.Length; i++)
{

    <div class="editor-label ">
        @Html.LabelFor(model => model.LesEntrees[i], "Entrée n°" + (i + 1).ToString(), new { @class = " express_input_label" })
    </div>
    <div class="editor-field  ">
        @Html.EditorFor(model => model.LesEntrees[i], new { @class = " express-input" })
    </div>
}

我无法确定错误但确定应该做的事情。

2 个答案:

答案 0 :(得分:1)

您将变量设置为 fields ,而不是属性。将它们更改为:

public string[] LesEntrees { get; set; }
public string[] LesPlats { get; set; }

答案 1 :(得分:0)

继Chris Pratt的回答,是的我应该使用属性,但由于阵列存在问题,这还不够 (见http://forums.asp.net/t/1597890.aspx?Collection+is+read+only+Arrays+in+models) 所以我回到了一个不太简单的使用Lists的viewmodel,这个可以工作......