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

标签 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/Index/All">All Assets</option>
        @foreach (var item in Model.NodeInfo)
        {
            <option value="/History/Index/@item.node.name">@item.node.name</option>
        }
    </select>
</div>

从下拉列表中选择一个项目后,网址将如下所示

http://web.site/History/Index/G0000106

现在我试图获取 URL 的最后一部分(在本例中为 G0000106)并将相应的下拉选项设置为选中。这是我到目前为止拼凑而成的 JavaScript,但它不起作用。

$('#assetSelect').find('option').each(function () {
    function getCurrentPageId() {
        var params = window.location.href.split('/');
        var i = params.length;
        var pageId = params[i];
        return pageId;
    }
    var currentPageId = getCurrentPageId();
    var $this = $(this);
    if ($this.text() == currentPageId) {
        $this.attr('selected', 'selected');
        return false;
    }
});

此函数可以与填充下拉列表的函数一起使用吗?这是最好的方法还是有 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);

关于javascript - 如何设置通过查看 MVC URL 选择的下拉选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26263400/

相关文章:

javascript - 乘法和除法

javascript - typescript :从类中的另一个方法调用方法

javascript - Angular JS最干净的方法有条件地将字符串附加到标签属性

javascript - 为什么我在 Gitlab CI 中出现 TypeError,但在运行 jest 时在我的机器上却没有?

JQuery 获取最接近所选元素的 div

asp.net-mvc - 如何在 Razor MVC 4 中使用 Ajax Control Toolkit?

jquery - 当我创建 jQuery 插件时,最好在需要时包含 Modernizr 吗?

jquery - 添加一行原始 html 后更新 dataTables

c# - mvc中的无限多级菜单

asp.net-mvc - MVC中的HitCounter