Javascript 如何设置通过查看MVC URL选择的下拉选项

Javascript 如何设置通过查看MVC URL选择的下拉选项,javascript,jquery,asp.net-mvc,html-helper,Javascript,Jquery,Asp.net Mvc,Html Helper,您好,谢谢您让stackoverflow成为像我这样的程序员学习的好资源。为了帮助我的第一个MVC项目,我在这里读了很多答案,这是我第一次问 这是我的下拉列表HTML <div class="dropdown"> <select id="assetSelect" onchange="location = this.options[this.selectedIndex].value;"> <option value="/History/Inde

您好,谢谢您让stackoverflow成为像我这样的程序员学习的好资源。为了帮助我的第一个MVC项目,我在这里读了很多答案,这是我第一次问

这是我的下拉列表HTML

<div class="dropdown">
    <select id="assetSelect" onchange="location = this.options[this.selectedIndex].value;">
        <option value="/History/Index/All">All Assets</option>
        @foreach (var item in Model.NodeInfo)
        {
            <option value="/History/Index/@item.node.name">@item.node.name</option>
        }
    </select>
</div>

此函数是否与填充下拉列表的函数一起工作?这是最好的方法还是有HTML助手可以做到这一点?感谢您的帮助,谢谢

选项1。您可以显著简化代码:

function getCurrentPageId() {
    var params = window.location.href.split('/');
    return params[params.length - 1];
}

var pageId = getCurrentPageId();
$('#assetSelect').find('option:contains(' + pageId + ')').prop('selected', true);
不管怎么说,你的问题出在这一行:

var i = params.length;
var pageId = params[i];
它应该是
params[i-1]
,因为您希望获取最后一个数组元素

选项2。一种更简单的方法也适用于您,即使用
location.pathname

$('#assetSelect').val(window.location.pathname);

既然您已经在这里使用jQuery,我建议您从元素中删除OnChange属性,而是在选择脚本的末尾添加事件wirelup,比如:
$('#assetSelect').on('change',function(){window.location=$(this.val();})$('#assetSelect').val(window.location.pathname);