Html.DisplayFor DropDownList 问题
我使用 asp.net mvc 2。我有一个模型 Supermodel,由 2 个模型 TestModel1 和 TestModel2 组成。 在 SuperModelView 中,我做了以下事情:
<%: Html.DisplayFor(x=> x.TestModel1, "TestModel1Template") %>
它工作得很好,除了下拉列表已填充但未设置选定值这一事实之外。 我在我的模板中使用以下代码作为下拉列表:
<%: Html.DropDownListFor(x=> x.Property1, (IEnumerable<SelectListItem>)ViewData["MyDDLList"], Model.Property1) %>
并且它没有设置所选属性。我将下面的代码放入 SuperModelView,调用 <%: Html.DisplayFor
填充模板,它工作得很好。所以我有点困惑,有什么区别?
<%: Html.DropDownListFor(x=> x.TestModel1.Property1, (IEnumerable<SelectListItem>)ViewData["MyDDLList"], Model.TestModel1.Property1) %>
更新:我试图调查这个问题,但有些事情是完全错误的。我可以共享整个代码,但不确定将其放在哪里,放在这里或附加单独的文件。
@Darin,我应该共享哪些其他部分,或者只是共享整个模型视图和控制器文件?
Im using asp.net mvc 2. I have a model Supermodel that consists of 2 models TestModel1 and TestModel2.
In SuperModelView Im doing the following thing:
<%: Html.DisplayFor(x=> x.TestModel1, "TestModel1Template") %>
Its working just fine, except for the fact, that dropdownlist is populated but selected value is not set.
Im using the following code for a dropdownlist in my template:
<%: Html.DropDownListFor(x=> x.Property1, (IEnumerable<SelectListItem>)ViewData["MyDDLList"], Model.Property1) %>
and its not setting the selected property. I put the code below to SuperModelView, that calls <%: Html.DisplayFor
To populate the template and it works just fine. So I`m kinda puzzled, what is the difference?
<%: Html.DropDownListFor(x=> x.TestModel1.Property1, (IEnumerable<SelectListItem>)ViewData["MyDDLList"], Model.TestModel1.Property1) %>
UPDATE: I`ve tried to investigate the issue, but something is totally wrong. I can share the whole code, not sure where to put it, here or attach with separate files.
@Darin, what other parts should I share, or just share the whole model view and controller files?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
首先显示模板只是为了显示。如果您需要使用下拉菜单进行编辑,请使用编辑器模板:
并在编辑器模板中:
其中 MyDDLList 定义如下:
并在控制器操作中填写值:
更新:
这是一个完整的工作示例:
模型:
控制器:
视图(
~/Views/Index.aspx
):DisplayTemplate (
~/Views/DisplayTemplates/MyViewModel
):Firstly display templates are just for displaying. If you need to edit with drop down use editor template:
and in your editor template:
where MyDDLList is defined like:
and in your controller action you fill the values:
UPDATE:
Here's a complete working example:
Model:
Controller:
View (
~/Views/Index.aspx
):DisplayTemplate (
~/Views/DisplayTemplates/MyViewModel
):