【问题标题】:Get the dropdown selected value and send it to OnGet method of the same page in asp.net core web application获取下拉选择值并将其发送到 asp.net core web application 中同一页面的 OnGet 方法
【发布时间】:2019-11-14 03:27:49
【问题描述】:

我不是开发人员背景,我正在尝试开发一些实用程序来帮助自动化我们的一些手动过程,作为其中的一部分,我设计了一个 Web 应用程序(简单的网页)。我可以使用 .cshtml 中的以下代码填充下拉列表中的值

<select asp-for="SelectDD" asp-items=@Model.pvalues>
    <option value="" selected>Select a value..</option>
</select>

我想在 .cshtml 中使用一个表单,这有助于轻松读取值,但如果我在表单下包含 html 元素,则会出现错误。

一旦我选择了一个下拉菜单并单击一个按钮,就会使用以下代码调用 OnGet() 方法并使用所选的下拉菜单值

<a id="pc" asp-page="Comparison" asp-route-ID="dropdownselectedvalue"><button type="button" class="btn btn-primary">Compare</button></a>

但问题是我无法提取选定的下拉值,也无法通过 asp-route-ID 属性传递它。能够在控制台(Chrome 开发人员工具)中使用 jquery 获取选定的下拉值,但找不到任何可以帮助我通过单击按钮发送值的内容

【问题讨论】:

  • string = SelectDD.SelectedItem.Value;
  • 谢谢米凯尔。我可以知道我需要在哪里使用上面的行吗?你是说这个

标签: javascript c# jquery asp.net-core razor


【解决方案1】:

但如果我在表单下包含 html 元素,则会出现错误。

  • 这里有什么错误?

  • 您要提交的属性名称是什么?是 SelectDD 还是 ID


用表单标签包裹元素并将表单方法设置为get,并使用提交按钮:

<!-- use ID as the target property name in the select element -->
<form method="get">
    <select asp-for="ID" asp-items=@Model.pvalues>
        <option value="" selected>Select a value..</option>
    </select>
    <input type="submit" value="Compare" />
</form>

在后端,您可以使用 get 方法中的参数来获取 select 的值:

public void OnGet(int ID)
{
    // ....
}

或者使用属性名并添加绑定属性:

[BindProperty(SupportsGet = true)]
public int ID { get; set; };

public void OnGet()
{
    // ...
}

【讨论】:

  • 如果我使用带有 get 方法的表单,页面会被多次刷新,因为我认为它是从当前页面 get 方法加载的。如果我使用 post 方法将所有内容放入表单中,我会收到 http 错误 400。
  • 我将无法共享代码,因为它包含一些机密数据。感谢您的帮助,我现在可以解决问题了
【解决方案2】:

以下帮助我解决了问题。

我已经修改了下面的锚标记(我已经删除了 asp-route-ID 属性)

<a id ="ps" asp-page="Comparison"><button type="button" class="btn btn-primary" onclick="getOption()">Compare</button></a>

我编写了以下javascript函数来帮助我获取选定的下拉值并更改锚标记href值

function getOption() {
    selectElement = document.querySelector('#SelectDD');
    output = selectElement.value;
    document.querySelector('#pc').setAttribute("href", "/Comparison?ID=" + output);
}

我花了 2-3 天解决这个问题,但终于解决了。希望这对其他人有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-11
    • 2023-03-26
    • 2015-09-09
    • 1970-01-01
    • 1970-01-01
    • 2016-02-13
    • 1970-01-01
    • 2023-03-09
    相关资源
    最近更新 更多