模型绑定html:asp无法正常工作

时间:2014-11-21 13:13:43

标签: c# asp.net asp.net-mvc asp.net-mvc-4 asp.net-mvc-5

我创建了一个动态textarea组,使用DOM动态添加JS组。 那些textarea,我希望它们在controller中。 我使用该代码在null t中收到model.actionLis个值:

以下是生成的HTML

<div class="input_fields_wrap">
<div><textarea class="form-control text-box multi-line" name="model.actionList[1].probleme"></textarea> <textarea class="form-control text-box multi-line" name="model.actionList[1].action"></textarea></div>

<div><textarea class="form-control text-box multi-line" name="model.actionList[2].probleme"></textarea> <textarea class="form-control text-box multi-line" name="model.actionList[2].action"></textarea></div>

<div><textarea class="form-control text-box multi-line" name="model.actionList[3].probleme"></textarea><textarea class="form-control text-box multi-line" name="model.actionList[3].action"></textarea></div>

</div>

通过此JS

$(wrapper).append('<div>Probleme: <textarea class="form-control text-box multi-line" name="model.actionList[' + x + '].probleme"></textarea> Action: <textarea class="form-control text-box multi-line" name="model.actionList[' + x + '].action"></textarea>@*<a href="#" class="remove_field">Remove</a>*@</div>'); //add input box

服务器端,这是controller

public ActionResult Create(AuditViewModel model)
{...}

这是有趣的着名Viewmodel部分:

public class AuditViewModel
    {public List<Actions> actionList { get; set; }}

最后,这是Action类:

public class Actions
{
    public string probleme { get; set; }
    public string action { get; set; }
}

有什么问题?

提前致谢!

1 个答案:

答案 0 :(得分:2)

首先,索引从 0 开始,然后像actionList[index].SomePeoperty一样使用它,因为actionList是您Model的属性:

当你写:

@model SomeModel

@Html.TextAreaFor(x=>x.SomeProperty)

它呈现为:

<textarea name="SomeProperty" id="SomeProperty"></textarea>

它不会呈现为:

<textarea name="model.SomeProperty" id="model.SomeProperty"></textarea>

所以试试如下:

<div>
<textarea class="form-control text-box multi-line" name="actionList[0].probleme"></textarea> 
<textarea class="form-control text-box multi-line" name="actionList[0].action">
</textarea>
</div>

<div>
<textarea class="form-control text-box multi-line" name="actionList[1].probleme"></textarea> 
<textarea class="form-control text-box multi-line" name="actionList[1]action">
</textarea>
</div>

<div>
<textarea class="form-control text-box multi-line" name="actionList[2].probleme"></textarea>
<textarea class="form-control text-box multi-line" name="actionList[2].action">
</textarea>
</div>