我是MVC3的新手,并且一直在使用EF和'Code First'开发一个小网站。我试图在处理下拉列表的视图中做一些事情,并且想知道最好的方法是什么。我希望用户能够从下拉列表中选择规则,并且根据选择的规则,我希望页面上的标签显示规则名称(不发布)。我还需要能够将所选规则发送到下一页。我还没有在视图中添加所有必要的字段,因为我真的不知道它应该如何工作。我该如何尝试这样做?
我有我的模特:
public class D1K2N3CARule
{
public int ID { get; set; }
[Required]
public int Name { get; set; }
[Required]
public string Rule { get; set; }
public D1K2N3CARule(int name, string rule)
{
Name = name;
Rule = rule;
}
public D1K2N3CARule()
{
Name = 0;
Rule = "";
}
}
我的ViewModel:
public class D1K2N3CARuleViewModel
{
public string SelectedD1K2N3CARuleId { get; set; }
public IEnumerable<D1K2N3CARule> D1K2N3CARules { get; set; }
}
我的控制器:
public ActionResult Index()
{
var model = new D1K2N3CARuleViewModel
{
D1K2N3CARules = db.D1K2N3DARules
};
return View(model);
}
和我的观点:
'@model CellularAutomata.Models.D1K2N3CARuleViewModel
@{
ViewBag.Title = "Index";
}
<asp:Content id="head" contentplaceholderid="head" runat="server">
<script type="text/javascript">
</script>
</asp:Content>
<h2>Index</h2>
<table>
<tr>
<td>
@Html.DropDownListFor(
x => x.D1K2N3CARules,
new SelectList(Model.D1K2N3CARules, "ID","Rule")
)
</td>
</tr>
</table>'
答案 0 :(得分:4)
我希望用户能够从下拉列表中选择规则,并且根据选择的规则,我希望页面上的标签显示规则名称(不发布)
这里你需要javascript。 jQuery对于这项工作来说是完美的。我首先要为下拉列表提供一个确定性ID,因为如果你在模板中运行这个视图,可能会在id中添加前缀,这会破坏我们的javascript id选择器(见下文):
@Html.DropDownListFor(
x => x.D1K2N3CARules,
new SelectList(Model.D1K2N3CARules, "ID", "Rule"),
new { id = "ruleDdl" }
)
然后提供一些容器,它将接收所选的值:
<div id="ruleValue" />
最后在单独的javascript文件中订阅下拉列表的更改事件,并使用所选值/文本更新容器:
$(function() {
// subscribe for the change event of the dropdown
$('#ruleDdl').change(function() {
// get the selected text from the dropdown
var selectedText = $(this).find('option:selected').text();
// if you wanted the selected value you could:
// var selectedValue = $(this).val();
// show the value inside the container
$('#ruleValue').html(selectedText);
});
});
我还需要能够将所选规则发送到下一页。
您可以将下拉列表放在表单
中@using (Html.BeginForm("NextPage", "Foo"))
{
@Html.DropDownListFor(
x => x.D1K2N3CARules,
new SelectList(Model.D1K2N3CARules, "ID","Rule")
)
<input type="submit" value="Go to the next page" />
}
并且NextPage控制器操作将接收所选值。