Бьюсь об заклад, он приходит из URL-адреса в качестве параметра маршрута.
Например, у вас есть следующий контроллер:
public class HomeController: Controller
{
public ActionResult Index(int id)
{
vqr model = GetModel(id);
return View(model);
}
[HttpPost]
public ActionResult Index(MyViewModel model)
{
// the model.Id property will be automatically populated here
// because the request was POST /home/index/123
...
}
}
и следующий вид:
@model MyViewModel
@using (Html.BeginForm())
{
<button type="submit">OK</button>
}
Теперь вы переходите к GET /home/index/123
и получаете следующееразметка:
<form action="/home/index/123" method="post">
<button type="submit">OK</button>
</form>
Обратите внимание на атрибут action
формы?Вот откуда идентификатор.По сути, помощник Html.BeginForm()
использует текущий URL-адрес при создании атрибута действия, и поскольку текущий URL-адрес /home/index/123
, это то, что используется.
И потому, что если вы оставили маршруты по умолчанию в вашем Global.asax, маркер маршрута {id}
используется в конце URL-адреса, механизм связывания модели по умолчанию успешно связывает его со свойством Id
вашей модели представления.