Какой смысл отправлять в HTML некоторые значения, которые не могут быть изменены пользователем, поскольку они не являются частью формы в качестве элементов ввода, просто чтобы отправить их обратно при обратной передаче в качестве параметров строки запроса? Не имеет смысла. Это полная трата пропускной способности. Для меня все, что вам нужно отправить на сервер, когда вы публикуете эту форму, это некоторый уникальный идентификатор (в дополнение, конечно, ко всем полям формы, которые пользователь может изменять):
Ajax.BeginForm(
"ActionName",
"ControllerName",
new { id = (ViewData["SomeObject"] as SomeClass).Id },
new AjaxOptions { },
new { id = "anHtmlId"}
)
{
... some input fields that the user can modify and
that will automatically be sent to the server when
the form is submitted
}
И, конечно, для всех значений, которые можно изменить, у вас будут соответствующие поля ввода, значения которых, очевидно, будут автоматически отправлены на сервер.
Наконец, на сервере используйте этот уникальный идентификатор для повторного получения исходных значений, откуда бы вы их ни извлекали в действии GET при визуализации формы. Вы взяли их откуда-то, верно, иначе вы бы не смогли сохранить их в ViewData
.
И, пожалуйста, избавьтесь от этих ViewData/ViewBag
, определите модели представлений и используйте строго типизированные представления. Я начинаю проявлять некоторую реальную аллергию на эти две слабо типизированные конструкции, которые никогда не должны использоваться ни в одном приложении ASP.NET MVC.