gpt4 book ai didi

asp.net-mvc - 发布到编辑 Controller 操作未传递模型 ID

转载 作者:行者123 更新时间:2023-12-02 08:44:38 24 4
gpt4 key购买 nike

我的 Controller 上有一个如下所示的操作:

[HttpPost]
public ActionResult Edit(EditMyObjectViewModel editMyObjectViewModel)
{
}

EditMyActionViewModel 包含一个 MyObject

这被传递到编辑 View (上述 Controller 操作的 GET 版本)

回帖时,ID 未设置....
如果我将 Controller 更改为:

[HttpPost]
public ActionResult Edit(Guid id, EditMyObjectViewModel editMyObjectViewModel)
{
editMyObjectViewModel.ID = id;
}

这行得通,但似乎有点不对?

我想我也可以将 View 上的隐藏字段绑定(bind)到 Model.ID?

这里的约定是什么?

编辑

模型/ View 模型如下:

public class EditMyObjectViewModel
{
public IEnumerable<SomeItem> SomeUnrelatedStuff { get; set; }
public MyObject MyObject { get; set; }
}

public class MyObject
{
public guid ID { get; set; }
public string Name { get; set; }
}

View 如下:

@model MyApp.Models.EditMyObjectViewModel
@using (Html.BeginForm("Edit", "License", FormMethod.Post, new { @class = "form form-horizontal" }))
{
@Html.TextboxFor(x=>x.MyObject.Name);
<input type="submit" class="btn btn-success" value="Create Modification" />
}

最佳答案

你是对的,要么需要创建一个隐藏字段来保存 id,要么需要将 ID 作为参数添加到操作方法中。

问题只是 id 的来源和填充方式。默认模型绑定(bind)器从表单字段填充模型;它不会使用查询参数。并且查询参数不会进入模型,但会填充到操作方法的参数中。

您可以做的另一件事是创建自定义模型绑定(bind)器以将查询参数填充到模型中。但在这种情况下,这感觉有点矫枉过正。另外,您必须为每个页面/模型执行此操作。

是我,我会将 id 添加到操作方法中。

关于asp.net-mvc - 发布到编辑 Controller 操作未传递模型 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13402227/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com