在回发时将值绑定到模型

时间:2015-01-08 18:56:51

标签: asp.net-mvc asp.net-mvc-4 asp.net-mvc-routing url-routing

这篇文章的标题是我对这里发生的事情的最好猜测。解释发生了什么:

在我们的索引页面上是已输入系统的代理列表。如果代理商自己注册为多家公司销售,则可以多次进入我们的系统。为了简化数据输入过程,我们创建了一个“克隆”功能。

“克隆”功能仅适用于已完全输入系统的代理。通过转到索引页面,找到处于“完成”状态的代理,然后单击“克隆”链接,我们的网站将复制一组特定字段,并打开Create.cshtml页面,并自动填充这些字段。

enter image description here

当您点击“克隆”链接时,该网站会进入Create GET控制器。我们正在克隆的代理的PK存在于URL中,我们在GET控制器方法中使用它来提取我们需要的字段。

我们创建一个全新的AgentTransmission模型对象,然后将此对象发布到视图中。此时,模型对象的PK值为0(我们对此字段使用自动分配的整数)。

enter image description here

通过逐步执行Razor代码,我可以看到模型发布到0字段仍然存在PK值的视图。

enter image description here

但是,当您点击“保存”时,模型对象会发布到Create POST控制器方法,其PK值不是0,而是{您正在克隆的原始代理的{1}}。

enter image description here

由于控制器在PK Create方法中,将模型对象发送到GET值为PK的视图,并逐步执行Razor代码,我可以看到在视图中呈现的0仍然具有ModelPK,这是唯一可以看到原始代理0值即将到来的地方from是URL。

enter image description here

“克隆”链接中包含的网址格式如下:

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 = "")
    {

1 个答案:

答案 0 :(得分:0)

将参数从id更改为cloneFromId,这有效。正如评论中所提到的,这是由PK字段ID与URL中传递的id参数之间的歧义引起的。