将select元素中的选定项值作为onchange事件中的参数返回

时间:2016-08-15 14:41:14

标签: html razor

我正在尝试将选定的项目值作为字符串从选择下拉列表传递到onchange事件中的某些剃刀代码,到目前为止只有很少的快乐。

<div class="sortby">
    Sort by:
    <select id="sortbyselect" onchange ="@HelperAccess.AnalyticsHelper.PostEvent("Sort by selection", "selection", this.value)">
        <option value="Recommended">Recommended</option>
        <option value="PriceHigh">Price: high to low</option>
        <option value="PriceLow">Price: low to high</option>
    </select>
</div>

在上面的代码中,我想将选择的结果传递给第三个参数(当前它的'this.value')。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

您无法像这样调用服务器方法。您的c#代码将在服务器中执行,您的onchange事件将在客户端上执行。客户端(浏览器)无法执行C#方法(HelperAccess.AnalyticsHelper.PostEvent)。

您可以做的是,对服务器进行ajax调用,您可以使用action方法接受所选选项的值,并在调用内部调用您需要的相关方法并返回您喜欢的任何数据。

<select id="sortbyselect">
    <option value="Recommended">Recommended</option>
    <option value="PriceHigh">Price: high to low</option>
    <option value="PriceLow">Price: low to high</option>
</select>

并听取此

上的更改事件
$(function(){
   $("#sortbyselect").change(function(){
      $.get("MySort","Home",{ id:$(this).val()},function(res){
        //do something with the response
      });
   });    
});

假设您在HomeController中有一个名为MySort的动作方法

public ActionResult MySort(string id)
{
  // Call your c# helper method here and return something
}