从选项标记中的视图向控制器发送id

时间:2017-12-08 10:43:54

标签: c# html asp.net-mvc razor

我正在尝试创建我的第一个网络应用。我有产品清单,我想按名称或价格对产品进行分类。我在<select>标记中有可能的选项,我尝试使用方法onchange将paramteres发送到我的控制器,然后对我的产品列表进行排序。当我调试我的程序时,我看到paramteres是发送null值。您有什么想法我如何解决我的问题?

<p>Sort by:</p>

<select onchange="location = this.value">
   <option value="@Url.Action("SortByString", new { id = "-----" })">-----</option>
   <option value="@Url.Action("SortByString", new { id = "Name" })">Name</option>
   <option value="@Url.Action("SortByString", new { id = "Price" })">Price</option>
</select>

public ActionResult SortByString(string sort){}

由于参数排序为空。感谢。

1 个答案:

答案 0 :(得分:0)

您应该根据需要使用Url.Action()方法的多次重载之一。在这种情况下,您可以使用this article中指定的第四个重载。

因此,您的代码必须更改如下,以准确传递您在控制器中的操作方法中指定的参数(如果您不想为您的网址定义自定义路由):

<p>Sort by:</p>

<select onchange="location = this.value">
   <option value="@Url.Action("SortByString", new { sort = "-----" })">-----</option>
   <option value="@Url.Action("SortByString", new { sort = "Name" })">Name</option>
   <option value="@Url.Action("SortByString", new { sort = "Price" })">Price</option>
</select>

public ActionResult SortByString(string sort){}