Asp.net mvc MVC-不同窗体上的POST命令后DropDownList值发生更改

Asp.net mvc MVC-不同窗体上的POST命令后DropDownList值发生更改,asp.net-mvc,Asp.net Mvc,我有一个视图,索引,它有两个表单,一个搜索表单和一个保存表单。它们都有绑定到同一应用程序数据源的DropDownList控件,但这是它们唯一的共同点 当我使用POST请求保存数据时,搜索表单中的DDL将更改为与保存表单中的DDL相同的值,这不是我想要的操作。这是我的精简代码: @model Models.InfoVM @using (Html.BeginForm("Search", "MyController")) { @Html.DropDownList("searchCodes",

我有一个视图,索引,它有两个表单,一个搜索表单和一个保存表单。它们都有绑定到同一应用程序数据源的DropDownList控件,但这是它们唯一的共同点

当我使用POST请求保存数据时,搜索表单中的DDL将更改为与保存表单中的DDL相同的值,这不是我想要的操作。这是我的精简代码:

@model Models.InfoVM

@using (Html.BeginForm("Search", "MyController")) {
    @Html.DropDownList("searchCodes", (IEnumerable<SelectListItem>)Application["Codes"], "--Select--")
}

@using (Html.BeginForm("Save", "MyController")) {
    @Html.DropDownListFor(m => m.Code, (IEnumerable<SelectListItem>)Application["Codes"], Model != null ? Model.Code : "--Select--")
}

为什么会发生这种情况?我如何打破两者之间的联系?因为我没有将搜索表单的DDL绑定到我绑定到页面的模型,所以我不希望该值发生更改。

这是预期的行为。如果模型的值更改,则页面上所有元素的值都会更改


下拉列表应有两种形式的不同模型属性。您可以将元素(而不仅仅是引用相同的元素)复制到不同的变量中。例如,尝试创建CodesForSearch和CodesForSave。使用相同的源填充这两个选择列表。将下拉列表与各自单独的变量绑定。

这是预期的行为。如果模型的值更改,则页面上所有元素的值都会更改


下拉列表应有两种形式的不同模型属性。您可以将元素(而不仅仅是引用相同的元素)复制到不同的变量中。例如,尝试创建CodesForSearch和CodesForSave。使用相同的源填充这两个选择列表。将下拉列表与各自单独的变量绑定。

谢谢-我不知道这是预期的行为。谢谢-我不知道这是预期的行为。
[HttpPost]
public ActionResult Save([System.Web.Http.FromBody]InfoVM model) {
    if (ModelState.IsValid) {
        Repository.UpdateInfo(model);
    }
    return View("Index", model);
}