2016-05-03 2 views
1

У меня есть вид, указатель, который имеет две формы, форму поиска и форму сохранения. Оба они имеют элементы управления DropDownList, привязанные к одному и тому же источнику данных приложения, но это единственное, что у них общего.MVC - значение DropDownList изменилось после команды POST в другой форме

Когда я сохраняю данные с помощью запроса POST, 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--") 
} 

И мои действия контроллера:

[HttpPost] 
public ActionResult Save([System.Web.Http.FromBody]InfoVM model) { 
    if (ModelState.IsValid) { 
     Repository.UpdateInfo(model); 
    } 
    return View("Index", model); 
} 

Почему это происходит и как я могу разорвать эту связь между этими двумя? Поскольку я не привязал DDL формы поиска к модели, связанной с этой страницей, я не ожидал, что значение изменится.

ответ

0

Ожидаемое поведение. Если значение модели изменяется, оно изменяется для всех элементов на странице.

Вы должны иметь разные свойства модели для выпадающего списка в двух формах. Вы можете скопировать элементы (а не только ссылку на них) в другую переменную. Например. Попробуйте создать CodesForSearch и CodesForSave. Залейте оба этих списка, используя тот же источник. Привяжите выпадающие списки своей собственной переменной.

+0

Спасибо - я не знал, что это ожидаемое поведение. – ScottSto

Смежные вопросы