![](/img/trans.png)
[英]How do I pass DateTime parameters from View to Controller in ASP.net MVC5?
[英]How do I use Optional Parameters in an ASP.NET MVC Controller
我在视图上有一组链接到两个列表的下拉控件。
//control
ViewData["Countries"] = new SelectList(x.getCountries().ToList(), "key","value",country);
ViewData["Regions"] = new SelectList(x.getRegions(country).ToList(), "id", "name", regions);
/*
on the view
*/
<% using (Html.BeginForm("","", FormMethod.Get))
{ %>
<ol>
<li>
<%= MvcEasyA.Helpers.LabelHelper.Label("Country", "Country:")%>
<%= Html.DropDownList("Country", ViewData["Countries"] as SelectList) %>
<input type="submit" value="countryGO" class="ddabtns" />
</li>
<li>
<%= MvcEasyA.Helpers.LabelHelper.Label("Regions", "Regions:")%>
<%= Html.DropDownList("Regions", ViewData["Regions"] as SelectList,"-- Select One --") %>
<input type="submit" value="regionsGO" class="ddabtns" />
</li>
</ol>
<br />
<input type="submit" value="go" />
<% } %>
因此它将查询发送到同一页面(因为它只提供了另一种设置/更新相应下拉菜单的方法,这是可以接受的,因为它将全部用javascript替换)。
点击的网址就像......
http://localhost:1689/?country=FRA®ions=117
区域取决于国家/地区代码。
我正在努力实现这一点,而不必担心路由,因为关于这个功能没有真正的意义。
因此Controller具有以下方法。
public ActionResult Index(string country, int regions)
字符串应该没问题,因为它将作为空字符串传递。 对于int,使其可为空:
public ActionResult Index(string Country, int? Regions)
另外,你会注意到我将它与你的查询字符串相同。
编辑
请注意,ASP.NET现在允许您定义默认参数。 例如:
public ActionResult Index(string Country, int Regions = 2)
但是,恕我直言,我建议你只使用它具有语义意义的默认值。 例如,如果Regions参数的目的是设置一个国家/地区的区域数量,并且大多数国家/地区都有两个区域(北部和南部),则设置默认值是有意义的。 我不会使用表示缺少输入的“幻数”(例如,999或-1) - 此时你应该使用null
。
我知道这是相当古老的,但对于后人来说,重要的是要注意,从C#2010(也就是4.0,与.NET 4一起发布),如果你想避免可空类型带来的潜在陷阱,你可以使用可选参数 。 您的方法签名如下所示:
public ActionResult Index(string Country, int Regions = -1)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.