【发布时间】:2016-05-18 20:58:20
【问题描述】:
我对 html、razor 和 MVC 还很陌生,所以如果这是一个简单的解决方法,我深表歉意,但我已经解决了这个问题一段时间,但没有解决。我希望每次下拉列表更改时都会触发一个控制器操作,该操作会重新填充部分视图。我已经尝试使用'onchange' html 属性以及通过设置下拉列表的 id 并让 jquery 函数触发它来实现这一点。但是我无法触发以下三个功能中的任何一个。这是我的代码..
@model AislesOnlineDataControl.Models.PickupPointsListModel
@{
ViewBag.Title = "PickupPointsList";
}
<script>
function Select() {
@Html.Action("PickupPartial", "PickUpPoint", new { mod = Model.points[Model.selectedID] });
};
$("#PupDropDown").on('change', function () {
@Html.Action("PickupPartial", "PickUpPoint", new { mod = Model.points[Model.selectedID] });
});
$(function() {
$('#PupDropDown').change(function () {
Model.selectedID = Convert.ToInt32(selectPoint.SelectedValue);
//window.location.reload();
@Html.Action("PickupPartial", "PickUpPoint", new { mod = Model.points[Model.selectedID] });
});
});
</script>
<h2>Manage Pick-Up Points</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
@{SelectList selectPoint = new SelectList(Model.selectedPoint, "Value", "Text");}
<div class="form-inline">
<div class="row">
@Html.DropDownListFor(model => model.selectedID, selectPoint, null, new { @id="PupDropDown", @onchange = "Select()" })
@Html.ActionLink("New", "CreatePickup", "PickUpPoint", null, new { @class = "btn btn-default pull-right" })
</div>
</div>
<div>
@Html.Partial("~/Views/PickUpPoint/PickupPartial.cshtml", Model.points[Model.selectedID])
</div>
</div>
}
【问题讨论】:
-
@Html.Action()是剃须刀代码,在传递给客户端之前在服务器上进行评估。它不会在客户端上重新评估以响应客户端事件。需要使用ajax调用服务端方法返回部分视图。
标签: javascript c# jquery html asp.net-mvc