Razor 获取所选的选项-Webmatrix

Razor 获取所选的选项-Webmatrix,razor,webmatrix,Razor,Webmatrix,我有一个表格,有一个下拉框,然后你有一个列表,其中有所有已插入的id,你可以编辑这些id,我的问题是。如何获取提交表单时选择的选项 这是提交表单上的下拉列表 <select name="nivelSeveridade"> <option disabled>-- Selecionar Nível Severidade --</option>

我有一个表格,有一个下拉框,然后你有一个列表,其中有所有已插入的id,你可以编辑这些id,我的问题是。如何获取提交表单时选择的选项

这是提交表单上的下拉列表

<select name="nivelSeveridade">
                                     <option disabled>-- Selecionar Nível Severidade --</option>
                                     <option>Alerta CC4</option>
                                     <option>Alerta CC3</option>
                                     <option>Alerta CC2</option>
                                     <option>Alerta CC1</option>
</select>
这是我在编辑页面上尝试的内容:

<select name="nivelSeveridade">
                                     <option disabled>-- Selecionar Nível Severidade --</option>
                                     <option>@row.nivelSeveridade</option>
                                     <option>Alerta CC4</option>
                                     <option>Alerta CC3</option>
                                     <option>Alerta CC2</option>
                                     <option>Alerta CC1</option>
</select>

如您所见,该选项与所选的选项重复。例如,如果选择的选项是Alerta CC4 i,则将有两个名称相同的选项。

要将下拉列表中与给定值相同的选项标记为“已选定”,必须将给定值与任何选项的值进行比较,并相应地设置所选属性。您可以列出下拉列表中的所有值,也可以从db表中选择下拉列表,并使用foreach循环创建下拉列表以测试它们的相等性

在您的情况下,您可以尝试以下方法:

@{
    List<string> options = new List<string>();
    options.Add("Alerta CC4");
    options.Add("Alerta CC3");
    options.Add("Alerta CC2");
    options.Add("Alerta CC1");
}

<form method="post">
    <select name="nivelSeveridade">
        <option disabled>-- Selecionar Nível Severidade --</option>
        @foreach(var option in options){
            if(option == row.nivelSeveridade){
                <option selected="selected">@option</option>
            } else {
                <option>@option</option>
            }
        }
    </select>
    <input type="submit"/>
</form>
实际上,RazorV2.0包含了一些作为条件属性的增强功能,这使得前一段代码的测试部分大大简化。将条件属性设置为传递给它们的布尔值的结果,结果代码可能如下所示:

@{
    List<string> options = new List<string>();
    options.Add("Alerta CC4");
    options.Add("Alerta CC3");
    options.Add("Alerta CC2");
    options.Add("Alerta CC1");
}

<form method="post">
    <select name="nivelSeveridade">
        <option disabled>-- Selecionar Nível Severidade --</option>
        @foreach(var option in options){
            <option selected="@(option == row.nivelSeveridade)">@option</option>
        }
    </select>
    <input type="submit"/>
</form>

当您说如何获得提交表单时选择的选项时,您的意思是什么?。您想让下拉列表第一次显示之前选择的选项,还是只向用户通知选择的选项,例如选择的选项:xxxx?选择的选项是默认值。我会尽量解释得更好。第一次选择第一个选项时,选择一个选项,然后用户选择其中一个选项并插入数据库。然后,如果用户编辑表单,他选择的选项将是第一个显示的选项,而不是“选择和”选项。我不知道这个解释是否清楚。伙计,非常感谢你的回答和解释。你让我这样的傻瓜很容易理解。谢谢我已经测试过了,效果很好。我还有一个问题。其中一个下拉列表来自数据库,我在尝试foreach时出错。这是错误运算符“==”不能应用于“WebMatrix.Data.DynamicRecord”和“string”类型的操作数。我是否必须将变量更改为其他值,以便他可以比较值?@Nibbler看起来您尚未指定要在下拉列表中用作值的字段名。在您的应用程序中,有许多下拉列表示例,其中填充了数据库中的数据。如果这没有帮助,也许你可以在发布代码时再问一个问题。