C# 如何在MVC3中更新视图而不回发
如何在MVC3中更新下拉列表。我想用其他视图填充的最新数据重新填充它,但我不想回发视图,而是想用jquery实现它。 我有一个下拉列表,如:C# 如何在MVC3中更新视图而不回发,c#,jquery,asp.net-mvc-3,C#,Jquery,Asp.net Mvc 3,如何在MVC3中更新下拉列表。我想用其他视图填充的最新数据重新填充它,但我不想回发视图,而是想用jquery实现它。 我有一个下拉列表,如: @Html.DropDownListFor(m => m.Department, Model.Departments) @Html.ValidationMessageFor(m => m.Departments) <input type="button" value="Refresh" id="btnrefresh" /> 以下是
@Html.DropDownListFor(m => m.Department, Model.Departments)
@Html.ValidationMessageFor(m => m.Departments)
<input type="button" value="Refresh" id="btnrefresh" />
以下是控制器方法:
public ActionResult RefreshDepartments(EmployeeModel empModel)
{
empModel.Departments = GetDepartments();
empModel.Roles = GetRoles();
return Json(new { message = "Updated successfully"}, JsonRequestBehavior.AllowGet);
}
如何在没有任何回发的情况下,单击“刷新”按钮以最新值更新dropdownlist?
将模型传递给控制器并更新模型属性是一个好主意吗?还有什么其他可能的方法 在我看来,你并不需要将模型发布到你的控制器上。此外,是的,您完全可以使用jquery来实现这一点!另一方面,您也可以使用Ajax.beginnform()helper方法来实现这一点,但是让我们来处理您的jquery示例 您可以简单地调用路径本身,而不是使用@Url.Action使jquery复杂化
$("#btnrefresh").click(function () {
var ref = 'ControllerName/RefreshDepartments';
$.each(result, function (index, val) {
$('#whateverYourRenderedDropdownListHtmlObjectis')
.append($("<option></option>")
.attr("value", val.Text)
.text(val.Text));
});
});
这是返回模型的替代方法。它允许您操作原始JSON。希望有帮助 你几乎都做到了!你为什么不通过行动发送数据,我是说列表?您发送了一条要查看的消息,因此您可以以类似方式发送列表,而无需提醒结果,您可以填写dropdownlist。大概是这样的:
public ActionResult RefreshDepartments(EmployeeModel empModel)
{
return Json(new { departments = GetDepartments()}, JsonRequestBehavior.AllowGet);
}
$.getJSON(ref, data, function (result) {
$("#Department").html("");
for (var i = 0; i < result.departments.length; i++) {
var item = result.departments[i];
$("#Department").append(
$("<option></option>").val(item.Id).html(item.Name);
);
});
});
公共行动结果刷新部门(员工模型empModel)
{
返回Json(新的{departments=GetDepartments()},JsonRequestBehavior.AllowGet);
}
$.getJSON(参考,数据,函数(结果){
$(“#部门”).html(“”);
对于(变量i=0;i
public JsonResult RefreshDepartments()
{
return Json(GetDepartments, JsonRequestBehavior.AllowGet);
}
private SelectList GetDepartments
{
var deparments = GetDepartments;
SelectList list = new SelectList(departments);
return list;
}
public ActionResult RefreshDepartments(EmployeeModel empModel)
{
return Json(new { departments = GetDepartments()}, JsonRequestBehavior.AllowGet);
}
$.getJSON(ref, data, function (result) {
$("#Department").html("");
for (var i = 0; i < result.departments.length; i++) {
var item = result.departments[i];
$("#Department").append(
$("<option></option>").val(item.Id).html(item.Name);
);
});
});