Когда я отправляю, я не получаю 0, когда он достигает моего метода действия Обновления
Это нормально, вы никогда не отправляете этот идентификатор на свой сервер.Вы только что использовали неправильную перегрузку помощника Html.BeginForm
:
@using (Html.BeginForm(
"Update", // actionName
"CustomerServiceMessage", // controllerName
FormMethod.Post, // method
new { id = 0 } // htmlAttributes
))
{
...
}
и получили следующую разметку (при условии маршрутов по умолчанию):
<form id="0" method="post" action="/CustomerServiceMessage/Update">
...
</form>
Видите проблему?
А вот правильная перегрузка :
@using (Html.BeginForm(
"Update", // actionName
"CustomerServiceMessage", // controllerName
new { id = 0 }, // routeValues
FormMethod.Post, // method
new { @class = "foo" } // htmlAttributes
))
{
...
}
, которая генерирует (при условии маршрутов по умолчанию):
<form method="post" action="/CustomerServiceMessage/Update/0">
...
</form>
сейчасвы получите id=0
внутри соответствующего действия контроллера.
Кстати, вы можете сделать свой код более читабельным и избежать подобных ошибок, используя C # 4.0 именованные параметры :
@using (Html.BeginForm(
actionName: "Update",
controllerName: "CustomerServiceMessage",
routeValues: new { id = 0 },
method: FormMethod.Post,
htmlAttributes: new { @class = "foo" }
))
{
...
}