@Html.DropDownListFor onchange 没有调用提到的 Action 方法
@Html.DropDownListFor onchange is not calling the mentioned Action method
我试图在视图中更改下拉列表值时调用控制器方法“GetTasksList”。然而,在下拉列表发生变化时,Controller 的 "Edit" 方法被调用并将表单提交到数据库。这是不可取的,因为我正试图根据下拉值从数据库中获取任务列表。
enter image description here
查看
@Html.DropDownListFor(x => x.AuditDecision, (SelectList)ViewBag.ListofAuditDecision, "Please select", new { @class = "form-control input-10", id = "AuditStatus", onchange = "testing();", @style = "width: 300px;" })
<script>
function testing() {
alert("in testing");
document.forms[0].action = 'GetAuditTasksList';
// window.location.href = 'GetAuditTasksList';
document.forms[0].submit();
}
</script>
控件转到下面的方法
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(Audit audit)
{
//submitting to database
}
而不是
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult GetAuditTasksList(Audit audit)
{
}
您应该使用辅助方法为表单生成正确的操作 uri。通过这种方式,您可以显式传递任何必需的参数,并避免将来对您的路由规则进行任何更改。例如;
document.forms[0].action = '@Url.Action("GetAuditTasksList", ... )';
我试图在视图中更改下拉列表值时调用控制器方法“GetTasksList”。然而,在下拉列表发生变化时,Controller 的 "Edit" 方法被调用并将表单提交到数据库。这是不可取的,因为我正试图根据下拉值从数据库中获取任务列表。
enter image description here
查看
@Html.DropDownListFor(x => x.AuditDecision, (SelectList)ViewBag.ListofAuditDecision, "Please select", new { @class = "form-control input-10", id = "AuditStatus", onchange = "testing();", @style = "width: 300px;" })
<script>
function testing() {
alert("in testing");
document.forms[0].action = 'GetAuditTasksList';
// window.location.href = 'GetAuditTasksList';
document.forms[0].submit();
}
</script>
控件转到下面的方法
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(Audit audit)
{
//submitting to database
}
而不是
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult GetAuditTasksList(Audit audit)
{
}
您应该使用辅助方法为表单生成正确的操作 uri。通过这种方式,您可以显式传递任何必需的参数,并避免将来对您的路由规则进行任何更改。例如;
document.forms[0].action = '@Url.Action("GetAuditTasksList", ... )';