这篇文章的标题是我对这里发生的事情的最好猜测。解释发生了什么:
在我们的索引页面上是已输入系统的代理列表。如果代理商自己注册为多家公司销售,则可以多次进入我们的系统。为了简化数据输入过程,我们创建了一个“克隆”功能。
“克隆”功能仅适用于已完全输入系统的代理。通过转到索引页面,找到处于“完成”状态的代理,然后单击“克隆”链接,我们的网站将复制一组特定字段,并打开Create.cshtml
页面,并自动填充这些字段。
当您点击“克隆”链接时,该网站会进入Create
GET
控制器。我们正在克隆的代理的PK
存在于URL中,我们在GET
控制器方法中使用它来提取我们需要的字段。
我们创建一个全新的AgentTransmission
模型对象,然后将此对象发布到视图中。此时,模型对象的PK
值为0
(我们对此字段使用自动分配的整数)。
通过逐步执行Razor代码,我可以看到模型发布到0
字段仍然存在PK
值的视图。
但是,当您点击“保存”时,模型对象会发布到Create
POST
控制器方法,其PK
值不是0
,而是{您正在克隆的原始代理的{1}}。
由于控制器在PK
Create
方法中,将模型对象发送到GET
值为PK
的视图,并逐步执行Razor代码,我可以看到在视图中呈现的0
仍然具有Model
值PK
,这是唯一可以看到原始代理0
值即将到来的地方from是URL。
“克隆”链接中包含的网址格式如下:
PK
这是在呈现{controller}/{action}/{PK}
页面时自然出现的网址。所以我的问题是......:
有没有办法阻止URL中出现的Create.cshtml
值绑定到被发送回PK
控制器的模型对象?
如果没有,我可以在从POST
控制器返回时更改URL吗?
修改
这里的评论是一些比特或相关代码
模型
GET
来自Index.cshtml的ActionLink
namespace MonetModelFromDb.Models
{
using System;
using System.Collections.Generic;
public partial class AgentTransmission
{
public int ID { get; set; }
获取
@Html.ActionLink("Clone", "Create", new { id = item.ID })
发表
//
// GET: /AgentTransmission/Create
[MonetAuthorize]
public ActionResult Create(int? id, long? x, string l = "", string f = "", string a = "", string agentId = "", bool secondAgent = false, string msg = "", string ReferenceNumber = "")
{
答案 0 :(得分:0)
将参数从id
更改为cloneFromId
,这有效。正如评论中所提到的,这是由PK
字段ID
与URL中传递的id
参数之间的歧义引起的。