【发布时间】:2011-05-25 02:24:51
【问题描述】:
我有一个 MVC 3 项目,并且卡在将视图绑定回 Post 上的模型。
这是我的模型:
public class DBViewModel
{
public ProductionDatabasesViewModel PDBViewModel { get; set; }
public IList<string> SelectedNames { get; set; }
public DBViewModel()
{
SelectedNames = new List<string>();
PDBViewModel = new ProductionDatabasesViewModel();
}
}
我的看法:(精简版)
@model Web.Models.DBViewModel
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<fieldset>
@Html.ListBoxFor(x => x.SelectedNames, new SelectList(Model.SelectedNames))
<input id="button-submit" name="SubmitButton" type="submit" value="Submit" />
</fieldset>
}
控制器片段:
[HttpPost]
public ActionResult Database(DBViewModel model)
{
var users = model.SelectedNames; //<---- empty, the count is 0 always.
}
在视图中,可以从自动完成框中选择用户,然后使用 jQuery 脚本将所选名称添加到上面视图中的列表中。这一切正常,所以我可以搜索用户,然后单击添加按钮将用户添加到列表中。但是我在点击提交按钮时遇到了问题。添加到视图中的用户(视图中的选择列表)未绑定到模型。所以在发布 model.SelectedNames 是空的。我也试过 Request["SelectedNames"] 和 Request.Form["SelectedNames"] ,它们都是空的。
我在普通网络表单方面非常有经验,但仍在学习 MVC,因此非常感谢任何帮助。
[更新]
明天我会进一步更新问题,但如果我选择列表中的项目,它们似乎将绑定到视图模型。我明天会解决这个问题的。但是非常感谢到目前为止所有的 cmets、帮助和建议。
【问题讨论】:
-
我想你想要这样的东西stackoverflow.com/questions/3194143/…
-
@Ryan - 不,不幸的是没有。这并不能解决在发布期间将表单值绑定回模型的问题。
标签: asp.net-mvc model-view-controller asp.net-mvc-3