我有一个视图组件,它用在我的布局中。ViewComponent 包含一个下拉列表,其中包含已登录用户的广告系列列表。所选项目是用户的当前广告系列(存储在数据库中(
我想以这样的方式处理下拉列表的onchange事件:
- 用户的当前广告系列应在数据库中更新。
- 用户应重定向到市场活动摘要页面("/活动摘要"(
我想在这种情况下我应该调用一个控制器方法,它将处理我需要的一切,但我不明白如何直接从 javascript 中做到这一点。
我尝试了以下方法,但对我不起作用:在 JavaScript 中处理 onchange 事件并在那里执行以下代码:
var selectedId = $("#CurrentCampaignDropdown").val();
$.get("/CampaignSummary", {currentCampaignId: selectedId});
最后,我能够找到解决问题的方法。
最后,除了一行之外,我甚至根本不需要javascript代码。这是我的代码示例:
_Layout.cshtml 代码:
@await Component.InvokeAsync($"{ViewComponentName}", /* parameters for view component */)
ViewComponent .cshtml 代码:
@using (Html.BeginForm("ConrollerMethodName", "ControllerName", FormMethod.Post))
{
@Html.DropDownList("CurrentCampaignId", new SelectList(/* parameters */), new {onchange = "this.form.submit()"})
}
控制器代码:
public IActionResult ControllerMethodName(int currentCampaignId) //The name of the parameter should be the same as the first parameter in DropDownList method. Otherwise, it will be null.
{
//Save your data
RedirectToAction(nameof(ActionYouNeed));
}
我希望它能帮助某人。
感谢Chris Pratt和Avin Kavish带领我朝着正确的方向前进。