Chr*_*Kee 41 c# asp.net-mvc c#-3.0
我在视图上有一组链接到两个列表的下拉控件.
//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" />
<% } %>
Run Code Online (Sandbox Code Playgroud)
因此它将查询发送到同一页面(因为它只提供了另一种设置/更新相应下拉菜单的方法,这是可以接受的,因为它将全部用javascript替换).
点击的网址就像......
http://localhost:1689/?country=FRA®ions=117
Run Code Online (Sandbox Code Playgroud)
区域取决于国家/地区代码.
我正在努力实现这一点,而不必担心路由,因为关于这个功能没有真正的意义.
因此Controller具有以下方法.
public ActionResult Index(string country, int regions)
Run Code Online (Sandbox Code Playgroud)
Jam*_*s S 80
字符串应该没问题,因为它将作为空字符串传递.对于int,使其可为空:
public ActionResult Index(string Country, int? Regions)
Run Code Online (Sandbox Code Playgroud)
另外,你会注意到我将它与你的查询字符串相同.
编辑
请注意,ASP.NET现在允许您定义默认参数.例如:
public ActionResult Index(string Country, int Regions = 2)
Run Code Online (Sandbox Code Playgroud)
但是,恕我直言,我建议你只使用它具有语义意义的默认值.例如,如果Regions参数的目的是设置一个国家/地区的区域数量,并且大多数国家/地区都有两个区域(北部和南部),则设置默认值是有意义的.我不会使用表示缺少输入的"幻数"(例如,999或-1) - 此时你应该使用null.
joe*_*dev 29
我知道这已经很老了,但是对于后人来说,重要的是要注意到C#2010(也就是4.0,与.NET 4一起发布),如果你想避免可空类型带来的潜在陷阱,你可以使用可选参数.您的方法签名如下所示:
public ActionResult Index(string Country, int Regions = -1)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
80355 次 |
| 最近记录: |