我的模特是个角色。他有一个领域"游戏",这是一个强类型对象,包含" Careers"字段,本身强类型对象。 模特必须在多种选择中选择职业。
我目前按原样显示:
@Html.DropDownListFor(model => model.career,
new SelectList(Model.game.professions, "name", "name"),
)
(职业属于List [职业])。
但是,这不会将下拉列表的选定值绑定到我的角色的职业领域。
任何提示?我已经搜索了一段时间,但我只能找到从模型中填充下拉列表的方法,而没有关于如何确保所选值传递回模型的内容。
谢谢
编辑=我接受了RedGoodBreaker的答案,即使它不是我的预期,因为它帮助我找到了解决方案。
要点是:你不能通过mvc中的DDL选择一个对象,你只能选择一个引用该对象的基本类型(在我的例子中,我选择字符串字段" name"我的职业生涯)。
答案 0 :(得分:1)
@Html.DropDownListFor
生成html,如
<select id="CarType" name="CarType">
<option value="a">Volvo</option>
<option value="b">Saab</option>
<option value="c">Mercedes</option>
<option value="d">Audi</option>
</select>
因此您可以看到它们是简单的字符串(在您的情况下,值和文本都相同)。当你选择一个张贴表格时会产生类似的东西:
...
CarType="a"
...
你可以做几个技巧,但问题是值得这样做,你真的需要吗。
通常,您的模型应该包含字段CarrerName
,并且应该将dropdownlist绑定到它。在接受表单提交的Controller
Action
中,您应该使用Carrer
从数据库或其他商店中重新CarrerName
(这就是我们询问ID的原因)。
我理解Skills
是某种不会改变太多的词典。存储选项(可能还有其他一些我不知道):
Session
,如果此字典没有更改,则在登录后保存更好。您可以在提交表单后访问它并找到合适的密钥(最佳int或guid)System.Web.Caching.Cache
。TempData
。 Database
。这个选项有其缺点和优点,你必须阅读,因为我不知道你的应用程序规范。
如果你在视图或javascript中提交之前需要这些数据,你必须自己做(没有简单的单行)。我可以帮忙,但我不知道你想要达到什么目的。
答案 1 :(得分:0)
答案 2 :(得分:0)
然后在Razor视图中
@Html.DropDownListFor(m => model.career, new SelectList(Model.game.professions, "Value", "Text"), "Career")
当然,模型需要传递到视图中,并且列表中的值已经填充