我希望从视图中向我的控制器传递一个参数(字符串)。该值应为从视图中的下拉列表中选择的值。该方法在按钮单击后调用,但在控制器中,该参数始终为空。
在视图中:
@using (Html.BeginForm("Send", "Overview", FormMethod.Get))
{
<p>Email: @Html.DropDownList("Emails", Model.GetEmails())
<input type="submit" value="Send" />
</p>
}
在控制器中:
public ActionResult Send(string email)
{
// email is always null!
return null;
}
在概述模型中:
private List<SelectListItem> emails;
...
public Overview()
{
emails = new List<SelectListItem>();
emails.Add(new SelectListItem() { Text = "a@b.com", Value = "a@b.com", Selected = true });
emails.Add(new SelectListItem() { Text = "b@c.com", Value = "b@c.com", Selected = false });
emails.Add(new SelectListItem() { Text = "c@d.com", Value = "c@d.com", Selected = false });
}
...
public List<SelectListItem> GetEmails()
{
return emails;
}
你能帮我完成这个工作吗?我漏掉了什么吗? (顺便说一下,请暂时不要考虑控制器返回 null 的问题:)
GetEmails()
是公共的,而且为什么要返回一个List<>
?这两个看起来非常像反模式。 - George Mauer