Asp.net mvc 如何在MVC中防止在选择dropdownlist更改时刷新页面
我在razor视图MVC中有一个dropdownlistAsp.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设置再次
@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.