【问题标题】:How do I set dropdown option selected by looking at MVC URL如何设置通过查看 MVC URL 选择的下拉选项
【发布时间】:2014-10-08 17:58:50
【问题描述】:

您好,感谢您使 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 助手可以做到这一点?任何帮助表示赞赏,谢谢!

【问题讨论】:

  • 由于您已经在这里使用 jQuery,我建议您从
  • 谢谢瑞克。据我了解,为什么这是首选?

标签: javascript jquery asp.net-mvc html-helper


【解决方案1】:

选项 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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-28
    • 1970-01-01
    • 1970-01-01
    • 2014-06-28
    • 1970-01-01
    • 2019-02-28
    • 2012-07-02
    • 2013-07-25
    相关资源
    最近更新 更多