Название этого сообщения - мое лучшее предположение о том, что здесь происходит. Объяснение:Значение привязки к модели при обратной передаче
На нашей индексной странице находится список агентов, которые были введены в нашу систему. Агенты могут быть введены в нашу систему более одного раза, если они регистрируются для продажи для нескольких компаний. Чтобы упростить процесс ввода данных, мы создали функцию «Клонировать».
Функция «Клон» работает только с агентами, которые были введены полностью в нашу систему. Перейдя на страницу индекса, найдя агента в статусе «Завершить» и нажав ссылку «Клонировать», наш сайт скопирует определенный набор полей и откроет страницу Create.cshtml
с этими автоматически заполненными полями.
При нажатии на "Clone" ссылку, сайт переходит в Create
GET
контроллера. PK
агента, которого мы клонируем, существует в URL-адресе, и мы используем его в методе контроллера GET
, чтобы вытащить нужные нам поля.
Мы создаем новый объект модели AgentTransmission
, а затем разместим его для просмотра. На данный момент объект модели имеет значение PK
0
(мы используем автоматически назначенное целое для этого поля).
Активизировав через код Razor, я могу видеть, что модель сообщения в представлении с 0
значение еще там для PK
поля.
Когда вы нажмете «Сохранить», однако, модель объект сообщение к методу Create
POST
контроллера с PK
значения не из 0
, но с PK
исходного агента клонированием из.
Так как контроллер, в методе Create
GET
, посылает объект модели в представление с PK
значением 0
и, путем активизации через код Бритва, можно видеть, что Model
, что в настоящее время рендеринга в представлении все еще имеет значение PK
0
, единственное место, где я могу видеть исходное значение PK
агента, это URL.
URL-адрес, содержащийся в "Клон" ссылка форматируется так:
{controller}/{action}/{PK}
Это URL, который, естественно, появляется, когда страница Create.cshtml
визуализируется. Поэтому мой вопрос заключается в следующем:
Есть ли способ предотвратить значение PK
, которое появляется в URL-адресе, от привязки к объекту модели, отправленного обратно в контроллер POST
?
Если нет, могу ли я изменить URL-адрес при возврате с контроллера GET
?
EDIT
Per комментарии здесь пару битов или соответствующий код
Модель
namespace MonetModelFromDb.Models
{
using System;
using System.Collections.Generic;
public partial class AgentTransmission
{
public int ID { get; set; }
ActionLink из Index.cshtml
@Html.ActionLink("Clone", "Create", new { id = item.ID })
GET
//
// 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 = "")
{
POST
[HttpPost]
[MonetAuthorize]
public ActionResult Create(AgentTransmission agenttransmission, string andAddAgent = "")
{
Пробовал ли вы использовать альтернативное имя свойства на вашей модели просмотра, чтобы предотвратить двусмысленность в привязке? Трудно понять, что на самом деле происходит из описательной прозы и множества скриншотов - код был бы более полезен. –
Поймите, не уверен, какой код показывать. Что было бы полезно? – NealR
Модель представления (исключаемые свойства), действия GET и POST и соответствующие части представления. Затем мы можем проследить поток программы, чтобы определить, что связано с ней. –