Asp.net mvc 如何在MVC中防止在选择dropdownlist更改时刷新页面

Asp.net mvc 如何在MVC中防止在选择dropdownlist更改时刷新页面,asp.net-mvc,Asp.net Mvc,我在razor视图MVC中有一个dropdownlist @Html.DropDownListFor(n => n.EMP_ID, (SelectList)ViewBag.EmployeeList, new { @id = "ddlemployee" },"---choose an Employee Name--"). 我已经使用jquery将选择更改事件应用到下拉列表中,当选择员工姓名获取员工姓名和实时数据时,问题是当我在下拉列表中选择一个值时,dropdownlist设置再次

我在razor视图MVC中有一个dropdownlist

   @Html.DropDownListFor(n => n.EMP_ID, (SelectList)ViewBag.EmployeeList,  new { @id = "ddlemployee" },"---choose an Employee Name--").
我已经使用jquery将选择更改事件应用到下拉列表中,当选择员工姓名获取员工姓名和实时数据时,问题是当我在下拉列表中选择一个值时,dropdownlist设置再次设置为默认的第一个值

就Asp.net术语而言,它没有坚持特定的选定值,如何防止回发到dropdownlist

ASP.NETWebForms通过使用一些叫做ViewState的东西来实现状态完整性

它作为页面中的隐藏字段实现,用于在请求之间保存数据

通过这种方式,asp.net webforms实现了回发机制,并且能够在请求中保存值

由于Http是一个无状态协议,这意味着它在请求之间没有关系

ASP.Net MVC中缺少视图状态

因此,您必须通过部分回发来停止回发。这意味着您需要在不刷新整个页面的情况下发送异步请求

使用AJAX是可能的。你可以使用

 MVC Ajax or Jquery Ajax.
通过使用AJax,我们可以消除回发,然后执行部分回发

解决方案:

希望这有帮助

更新:

明白了

将Empid作为querystring从jquery传递,如下所示:

       <script>
        $(document).ready(function () {
            $("#ddlemployee").change(function () {
                debugger;
                var empid = $("#ddlemployee").val();
                location.href = '@Url.Action("GetEmployeeDetails", "Employer")?empid=' + empid ;

        });
    });
       </script>

此EMP_ID将相同的ID传递给所选的dropdownlist。就这样。

我不明白这个问题。。当您更改下拉列表时,页面刷新或页面刷新后下拉列表的选定值将更改为默认值?我的意思是,当我在下拉列表中选择一个值时,将参照表中的员工姓名显示数据员工数据,但问题是当我在获取数据后选择时,下拉列表再次显示为选择员工,而不是我所选择的,它应该坚持我所选择的价值@JhoonBeyhttp是一种无状态协议,因此在刷新页面后,它会丢失所有数据。你必须做部分回发,而不是全部回发。更多细节见我的答案。如何在MVC30中使用ajax dropdownlistfor请添加加载员工数据和控制器操作的部分视图代码。怎么可能?我只想使用异步请求重定向到控制器。。??你能给我一些线索吗?@Sanjay.看看我最新的答案。您正在异步地点击控制器,从服务器获取数据,并在html页面中填充退役数据。它不会按最初选择的下拉列表值PREISTS重新加载下拉列表
$("#dropdownid").change(function(event e)
{
     //Make your ajax request here..
});
$("#dropdownid").change(function () {
    $.ajax({
        type: "post",
        contentType: "application/json;charset=utf-8",
        url: /*Your URL*/,
        success: function (data) {
            //do your callback operation  
        }                  
    });
});
       <script>
        $(document).ready(function () {
            $("#ddlemployee").change(function () {
                debugger;
                var empid = $("#ddlemployee").val();
                location.href = '@Url.Action("GetEmployeeDetails", "Employer")?empid=' + empid ;

        });
    });
       </script>
        model.EMP_ID = empid;//in Controller Action Method before foreachloop of my code
                             // and this model.EMP_ID binded to dropdownlist.