在ASP.NET MVC项目中提交选定的dropdownList值

时间:2016-10-13 11:56:45

标签: c# jquery asp.net-mvc

我在部分视图中列出了客户列表

@{
    List<Clients> clientsList = ViewBag.ClientsList;
}

<script src="~/Scripts/jquery-3.1.1.min.js"></script>

<li class="dropdown">
    <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Clients <span class="caret"></span></a>
    <ul class="dropdown-menu" role="menu">
        @foreach (Clients c in clientsList)
        {
            <li>@Html.ActionLink(c.NomClient, "Index", "Home", new {c.ID}, null)</li>
        }
    </ul>
</li>

我想要的是,当用户点击下拉列表中的客户端时,它会将客户端ID发送到控制器上的方法,而无需单击提交按钮,例如或使用表单。 我尝试使用ActionLink,但只是通过传递URL中的id,我希望URL中没有clientId。 我怎么能这样做?

THX

4 个答案:

答案 0 :(得分:1)

做为

HTML:

Graphite

的javascript:

<ul class="dropdown-menu" role="menu">
    @foreach (Clients c in clientsList)
    {
        <li>@c.NomClient</li>
    }
</ul>

答案 1 :(得分:0)

您可以使用Jquery。

在您的li上创建class,点击此class即可创建活动。只需使用window.location.href@Url.Action()重定向您的网页。

<强> JQuery的

$(".dropdownclient").click(function(){
  window.location.href="@Url.Action('Method','Controller')/"+$(this).data("id");
});

<强> HTML

<ul class="dropdown-menu" role="menu">
  @foreach (Clients c in clientsList)
  {
    <li class='dropdownclient' data-id="@c.ClientID">@Html.ActionLink(c.NomClient, "Index", "Home", new {c.ID}, null)</li>
  }
</ul>

答案 2 :(得分:0)

使用jQuery试试这个。您的ID不会成为网址的一部分。

<ul class="dropdown-menu" role="menu">
    @foreach (Clients c in clientsList)
    {
       <li><button data-action="do-stuff" data-url="@Url.Action("Index", "Home")" data-id="@c.ID">@c.NomClient</button></li>
    }

</ul>

$("[data-action='do-stuff']").on('click', function (event) {

    var opt = $(this).data();

    $.ajax({
        url: opt.url,
        data: { id = opt.id },
        cache: false,
        type: "POST"
        success: function (data, textStatus, XMLHttpRequest) {
           //do stuff
        }
    });
});

答案 3 :(得分:0)

@Html.DropDownListFor(m => m.NomClient, new SelectList(ViewBag.ClientsList,"Key", "Value"), "Select", new { @class = "dropdown-menu" })

$(".dropdown-menu").change(function (event) {    
    $.ajax({
        url: "Home/Index/",
        data: { id = $(this).val() /* add other additional parameters */ },
        type: "POST",
        success: function (data) {
           //do stuff
        }
    });
});