Asp.net 核心:调用控制器方法更改下拉列表



我有一个视图组件,它用在我的布局中。ViewComponent 包含一个下拉列表,其中包含已登录用户的广告系列列表。所选项目是用户的当前广告系列(存储在数据库中(

我想以这样的方式处理下拉列表的onchange事件:

  1. 用户的当前广告系列应在数据库中更新。
  2. 用户应重定向到市场活动摘要页面("/活动摘要"(

我想在这种情况下我应该调用一个控制器方法,它将处理我需要的一切,但我不明白如何直接从 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带领我朝着正确的方向前进。

相关内容

最新更新