Что-то довольно странное происходит с моим приложением:
У меня есть следующее свойство в моем ViewModel:
public int? StakeholderId { get; set; }
Это представляется в частичном представлении следующим образом:
<%= Html.Hidden("StakeholderId", Model.StakeholderId) %>
Форма отправлена, и соответствующее действие контроллера генерирует идентификатор и обновляет модель, прежде, чем возвратить то же представление с обновленной моделью
Проблема, которую я испытываю, состоит в том, что скрытое поле ничего не имеет в своем атрибуте "значения" представленным во второй раз даже при том, что StakeholderId теперь имеет значение.
Если я просто произвел значение самостоятельно, оно обнаруживается на странице, таким образом, у меня есть оно для рендеринга значения путем выполнения этого:
<input type="hidden" id="StakeholderId" name="stakeholderId" value="<%: Model.StakeholderId %>" />
Но довольно странно, что помощник не берет обновленное значение?
(Я использую jQuery, чтобы отправить формы и представить результаты действия в отделениях, но я проверил, и HTML, который я возвращаю, является уже неправильным, прежде чем jQuery сделает что угодно с ним, таким образом, я не думаю, что это имеет непосредственное отношение к чему-либо),
ОБНОВЛЕНИЕ
Я с тех пор обнаружил, что могу также очистить соответствующий ключ ModelState, прежде чем мое действие контроллера возвратит частичное представление.
Помощник сначала поищет POSTed значения и использует их. По мере заполнения формы он будет подбирать старое значение ID. Ваш обходной путь верен.
.