我正在尝试将选定的项目值作为字符串从选择下拉列表传递到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')。
有人可以帮忙吗?
答案 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
}