我想对自动回复进行下拉列表。 我在表格上的表格:
@using (Html.BeginForm("Index", "Model", FormMethod.Post))
{
@(Html.Telerik().DropDownList()
.Name("ddlBrands")
.BindTo((IEnumerable<SelectListItem>)ViewData["brands"])
.ClientEvents(events => events
.OnChange("onDropDownListChange")
)
)
<input type="submit" value="OK" />
<table style="margin:15px; margin-left:0px;">
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.FullModel)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.ModelID }) |
@Html.ActionLink("Delete", "Delete", new { id=item.ModelID })
</td>
</tr>
}
</table>
}
和javascript:
<script type="text/javascript">
function onDropDownListChange(e) {
SimpleAjaxRequest('/Model/Index', e.value);
}
function SimpleAjaxRequest(url, requestData) {
return $.ajax(
{
type: 'POST',
url: url,
async: true,
data: { ddlBrands: requestData },
dataType: "json",
traditional: true
});
}
</script>
我通过Ajax从Index视图发送Post数据到服务器,在操作数据之后我需要在表单上更新数据。我怎么能这样做?我尝试重定向到POST操作
[HttpPost]
public ActionResult Index(string ddlBrands)
{
SetBrandItems();
return RedirectToAction("Index", "Model", new {ddlBrands = ddlBrands});
}
调用GET操作后
public ActionResult Index(int? ddlBrands)
{
SetBrandItems();
List<Model> m = dm.GetModelsByBrandId(ddlBrands).ToList();
return View(m);
}
但我的页面没有刷新,网址没有更改,数据也没有更新...... 有人可以帮帮我吗?
答案 0 :(得分:1)
我想对自动回复进行下拉列表。我在表格上的表格:
执行标准表格提交:
function onDropDownListChange(e) {
$("form").submit();
}
并返回相同的View(使用预填充模型):
[HttpPost]
public ActionResult Index(string ddlBrands) {
SetBrandItems();
return View("Index", new { ddlBrands = ddlBrands });
}
或者您想通过AJAX制作吗?如果是这样,请改用Ajax.Form:
@using (Ajax.BeginForm(...)) {
...
}
答案 1 :(得分:1)
DropDownList更改事件是ajax操作。我认为你不能在服务器端重定向。但您可以在ajax回调中添加重定向。
例如:
function SimpleAjaxRequest(url, requestData) {
return $.ajax(
{
type: 'POST',
url: url,
async: true,
data: { ddlBrands: requestData },
dataType: "json",
traditional: true,
success: function() {
//callback redirect
location.href = '/Model/Index';
}
});
}
[HttpPost]
public ActionResult Index(string ddlBrands)
{
SetBrandItems();
return Json(null, JsonRequestBehavior.AllowGet);
}