C# 在MVC中,为什么我的控制器需要接收一个;新{id=restaurant.id}";,而不是;餐厅Id;?两者都不是简单的int';s

C# 在MVC中,为什么我的控制器需要接收一个;新{id=restaurant.id}";,而不是;餐厅Id;?两者都不是简单的int';s,c#,.net,model-view-controller,C#,.net,Model View Controller,因此,这里我的mvc控制器方法将int-id作为参数。我想知道为什么需要新的“{id=restaurant.id}”,而“restaurant.id”是不够的 [HttpPost] [ValidateAntiForgeryToken] public ActionResult Edit(Restaurant restaurant) { if (ModelState.IsValid) { db.Update(resta

因此,这里我的mvc控制器方法将int-id作为参数。我想知道为什么需要新的“{id=restaurant.id}”,而“restaurant.id”是不够的

 [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Edit(Restaurant restaurant)
    {
        if (ModelState.IsValid)
        {
            db.Update(restaurant);

            return RedirectToAction("Details", new { id = restaurant.Id });
        }
        return View(restaurant);
    }

这是因为MVC需要一个从中检索值并绑定到动作参数的对象。换句话说,你可以做:

return RedirectToAction("Details", restaurant);
Mvc将对对象进行爬网,以查找与操作参数的名称和类型匹配的属性,因此应绑定到餐厅的“Id”属性。 但是,如果您只是传递了餐厅的Id,MVC将对餐厅Id属性的类型进行爬网


希望这有帮助。如果是,请将其标记为答案;)

如果你这样做,结果会怎样?