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

时间:2019-06-13 18:40:54

标签: javascript c# asp.net-core

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

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

  1. 用户的当前广告系列应在数据库中更新。
  2. 应将用户重定向到广告系列摘要页面(“ / CampaignSummary”)

我想在这种情况下我应该调用一个控制器方法,该方法可以处理我需要的一切,但是我不知道如何直接从javascript中进行操作。

我尝试了以下对我不起作用的方法: 处理javascript中的onchange事件并在其中执行以下代码:

var selectedId = $("#CurrentCampaignDropdown").val();
$.get("/CampaignSummary", {currentCampaignId: selectedId});

1 个答案:

答案 0 :(得分:0)

最后,我能够找到解决问题的方法。

最后,除了一行以外,我什至不需要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)带领我朝着正确的方向前进。