0

我在视图上有以下代码:

@using (Html.BeginForm()) {

    <div class="select-box form">
        <p>
            <strong>Select transcript name to view:</strong>
            @Html.DropDownList("license", (SelectList)ViewBag.Licenses, new { onchange = "this.form.submit();" })
        </p>
    </div>
    <div class="select-box form">
        <p>
            <strong>You may have multiple periods for each transcript name:</strong>
            @Html.DropDownList("period", (SelectList)ViewBag.Periods, new { onchange = "this.form.submit();" })
        </p>
    </div>
}

我需要根据哪个下拉菜单导致回发来实现一些逻辑。我正在考虑在提交表单之前添加一个隐藏的输入并通过 jQuery 设置控件名称的值,但我想知道是否有一种“本机”方法可以做到这一点。

这是我的控制器签名:

public ActionResult Checklist(int license, int period) 

提前致谢!

4

2 回答 2

1

我会将一个类应用于下拉列表,以便我的 jQuery 可以将其用作选择器标准

 @Html.DropDownList("license", (SelectList)ViewBag.Licenses, new { @class="mySelect"})
 @Html.DropDownList("period", (SelectList)ViewBag.Periods, new { @class="mySelect"})
 <input type="hidden" id="source" name="source" value="" />

脚本是

$(function(){

 $(".mySelect").change(function(){
   var itemName=$(this).attr("name");
   $("#source").val(itemName);
    $("form").submit()
 });

});
于 2012-05-16T19:08:28.953 回答
1

使用这样的东西。(这里你调用的是 action 方法而不是提交表单)

哪个下拉菜单会导致更改将非零值传递给操作方法,另一个将传递 0。

 @Html.DropDownList("license", (SelectList)ViewBag.Licenses, new { onchange = "document.location.href = '/ControllerName/Checklist?license=' + this.options[this.selectedIndex].value + '&period=0'" })
 @Html.DropDownList("period", (SelectList)ViewBag.Periods, new { onchange = "document.location.href = '/ControllerName/Checklist?license=0&period=' + this.options[this.selectedIndex].value;" })

希望这可以帮助!

于 2014-08-01T13:33:39.123 回答