我有一个表单(名称,地址)等的ViewModel,它全部绑定到我的页面上的控件(使用Spark引擎) - 例如
!{ Html.DropDownList() }
工作正常。但是,有一个DropDownList绑定在其中没有值开始,使用Ajax填充值(通过选择以前的下拉列表)
问题在于我提交页面时出现验证错误。页面加载,我的选择列表中没有值(因为它没有被触发以获取它们)。
如何设置它以便ViewModel知道动态获取的值,以便它可以在页面加载时填充选择列表?
答案 0 :(得分:0)
您需要:
使用Html.DropDownList()调用来执行此服务器端,该调用允许您传递值:
Html.DropDownList(string name, IEnumerable<SelectListItem> selectList, string optionLabel, object htmlAttributes)
或者另一种方法是在页面加载时触发相同的ajax调用,这样就不会有重复的逻辑。
我实际上推荐第二种方式,因为它会阻止你以多种方式做同样的事情,但它确实意味着那里有'
答案 1 :(得分:0)
您可以在viewmodel中添加selectlist类型的属性,在构造函数中填充它,并通过视图页面中的Html.DropDownList函数调用它。此外,由于此选择列表依赖于另一个列表(即viewmodel的另一个属性)。在你的构造函数中,你可以编写像
这样的代码如果第一个列表框连接到int类型的list1属性,并且允许值为> 0
<code>
if (list1!=0)
{
write code to populate second list based on your first list parameter and also set
the selected value as if selected by the user at submit its stored in the other
property linked to the second list box.
}
</code>
如果您还不清楚,请在此处写下您的viewmodel的相关代码,以及第二个列表的服务器端数据库调用,我可以通过编辑您的代码来帮助您。