MVC 表单提交赢得发送 select 标签 selected 选项

MVC form submit won send the select tag selected option

我有一个 MVC 表单,里面有一个 HTML select 标签。 select 是从 JavaScript 填充的。 如何在提交表单时发送 selected 选项?

@using (Html.BeginForm("LoginFromTest", "Login", FormMethod.Post))
{
    @Html.ValidationSummary(true, "Login failed. Check your login details.");
    <div style="margin: 10px;">
        <fieldset>
            <legend>Login</legend>

            <div class="editor-label">
                Username: 
            </div>
            <div class="editor-field">
                <input type="text" name="user" />
            </div>

            <div class="editor-label">
                Password: 
            </div>
            <div class="editor-field">
                <input type="password" name="password" />
            </div>

            <div class="editor-label">
                Authority:
            </div>
            <div class="editor-field">
                <select id="authority" />
            </div>

            <input type="submit" value="Log In" />
            <br/>
            @if (!string.IsNullOrWhiteSpace(ViewBag.Error))
            {
                <span style="color: red;">@ViewBag.Error</span>
            }
        </fieldset>
    </div>
}

谢谢

假设您的操作方法类似于:

public ActionResult LoginFromTest(string user, string password, string authority)

你只需要给你的 select 一个与你想要它填充的参数相匹配的名字:

 <div class="editor-field">
    <select id="authority" name="authority">
        <option value="X" />
        <option value="Y" />
    </select>
</div>

如果您绑定到模型,您的模型需要:

public class myModel
{
   public string username {get; set;}
   public string password {get; set;}
   public string authority {get; set;}
}

您的操作将如下所示:

public ActionResult LoginFromTest(myModel model)

但名称保持不变。您也可以使用 @Html.DropDowListFor@Html.DropDownList 助手,但完全可以使用 flat HTML.

来完成此操作