【发布时间】:2014-10-15 12:38:26
【问题描述】:
我有以下 ViewModel:
public class DataSyncViewModel
{
public ConfigurableDataSyncOptions DataSyncOptions { get; set; }
public int Id { get; set; }
public string SystemName { get; set; }
}
然后我循环遍历DataSyncOptions 以在我的视图中列出一些文本框:
@if (@Model.DataSyncOptions != null)
{
if (Model.DataSyncOptions.TextConfigurableOptions != null)
{
for (int i = 0; i < Model.DataSyncOptions.TextConfigurableOptions.Count; i++)
{
<div class="span6">
<h4>@Model.DataSyncOptions.TextConfigurableOptions[i].OptionText?</h4>
<p>
@Html.EditorFor(m => Model.DataSyncOptions.TextConfigurableOptions[i].OptionValue)
</p>
@Html.HiddenFor(m => Model.DataSyncOptions.TextConfigurableOptions[i].OptionName)
</div>
}
}
}
@Html.HiddenFor(m => m.Id)
@Html.HiddenFor(m => m.SystemName)
这很有效,当表单回传时,我可以从我的控制器访问SystemName 和Id。
但是,如果我替换
@Html.EditorFor(m => Model.DataSyncOptions.TextConfigurableOptions[i].OptionValue)
与
@if (Model.DataSyncOptions.TextConfigurableOptions[i].OptionType == "")
{
@Html.EditorFor(m => Model.DataSyncOptions.TextConfigurableOptions[i].OptionValue)
}
else
{
//This appears to be causing issues
<input type="@Model.DataSyncOptions.TextConfigurableOptions[i].OptionType" name="Model.DataSyncOptions.TextConfigurableOptions[@i].OptionValue" value="@Model.DataSyncOptions.TextConfigurableOptions[i].OptionValue" />
}
我的价值观不再随模型发回。我试图允许我的应用程序的插件创建者指定他们添加的选项的输入类型,因此我手动创建输入。
关于为什么更改输入生成会破坏回发时的模型绑定的任何想法?
【问题讨论】:
标签: asp.net-mvc viewmodel model-binding