C# 如何在mvc中将id传递给控制器

C# 如何在mvc中将id传递给控制器,c#,asp.net-mvc,asp.net-mvc-5,C#,Asp.net Mvc,Asp.net Mvc 5,我有一个名为image的model,属性名为PostID,还有一个名为post的model。在列表视图中,当用户单击帖子向其添加图像时,它通过HtmlActionLink @Html.ActionLink(“添加图像”,“添加图像”,新建{id=item.PostID}) 它工作正常,但我也需要在图像模型中保存该PostId public ActionResult AddImages(int id) { ImageViewModel images = new Im

我有一个名为image的
model
,属性名为
PostID
,还有一个名为post的
model
。在列表
视图
中,当用户单击帖子向其添加图像时,它通过
HtmlActionLink

@Html.ActionLink(“添加图像”,“添加图像”,新建{id=item.PostID})

它工作正常,但我也需要在图像
模型
中保存该
PostId

    public ActionResult AddImages(int id)
    {
        ImageViewModel images = new ImageViewModel();
        images.PostID = id;           
        return View(images);
    }
    [HttpPost]
    public ActionResult AddImages(ImageViewModel image, HttpPostedFileBase images)
    {            
        Image newImage = new Image();
        newImage.PostID = image.PostID;
        return View("Index");
    }

这样它将不起作用,当它保存时,
PostID
的值为0。我也尝试过使用
ViewBag
,但到目前为止运气不佳。在AddImages
视图中
没有
文本框
PostID
属性的任何内容,因为用户无法设置或查看它。

是的,
PostID
不是由用户设置的,但您仍然需要将其放入
中,以便它将以
HttpPost
的形式回发到服务器。通常,我们使用一个
隐藏字段
。比如:

<form>
    @Html.HiddenFor(m => Model.PostID)

    <!-- Other fields here -->
</form>

@Html.HiddenFor(m=>Model.PostID)

是的,
PostID
不是由用户设置的,但是您仍然需要将其放入
中,以便它将以
HttpPost
的形式发回服务器。通常,我们使用一个
隐藏字段
。比如:

<form>
    @Html.HiddenFor(m => Model.PostID)

    <!-- Other fields here -->
</form>

@Html.HiddenFor(m=>Model.PostID)

为了在HttpPost操作中获得
PostID
,您应该在视图的表单标签中为
PostID
添加输入字段

@Html.HiddenFor(m=>Model.PostId)

为了在HttpPost操作中获得
PostID
,您应该在视图的表单标签中为
PostID
添加输入字段

@Html.HiddenFor(m=>Model.PostId)

在视图上创建输入以存储模型的id。通常是隐藏的输入。如果将视图模型属性重命名为
ID
而不是
PostID
,则无需执行任何操作-它将作为路由值添加到表单
action
属性中(视图中不需要
HiddenFor()
),在视图上创建输入以存储模型的ID。通常为隐藏输入。如果将视图模型属性重命名为
ID
而不是
PostID
,则无需执行任何操作-它将作为路由值添加到表单
action
属性中(视图中不需要
HiddenFor()
)这种方法是安全的还是最好的方法?据我所知,这是最简单的方法。这种方法是安全的还是最好的方法?据我所知,这是最简单的方法