Объект, указанный для обновления, не распознан - PullRequest
4 голосов
/ 19 января 2012

У меня есть функция обновления, подобная этой:

public void Update(HomeBanner homebanner)
    {
        homebanner.EnsureValid();
        DataSource.DataContext.Refresh(System.Data.Linq.RefreshMode.KeepCurrentValues, homebanner);
        DataSource.DataContext.SubmitChanges();
    }

И я пишу обновление контроллера

[AcceptVerbs(HttpVerbs.Post)]
    //[ValidateAntiForgeryToken]
    [ValidateInput(false)]
    public ActionResult ManageImages(int ? id,FormCollection form)
    {
        HomeBanner homebanner= BannerRepository.RetrieveById(id);
        this.TryUpdateModel(homebanner);
        string photoName = saveImage("photo");
        if (photoName != string.Empty)
        homebanner.ImageID = photoName;
        BannerRepository.Update(homebanner);
        return RedirectToAction("list", "Admin");

    }

и затем вид:

<% using (Html.BeginForm("ManageImages", "Admin", FormMethod.Post, new { enctype = "multipart/form-data" }))
   {%>
<h3>Manage Images</h3>
         <div class="label-field">
        <label for="ID">Chọn vị trí:</label>
         <%= Html.DropDownList("ID", DataHelper.Banner().ToList().ToSelectList("value", "name",Model.HomeBanner.ID.ToString()))%>
         </div>
        <div class="label-field">
        <label for="photo">
            Chọn hình</label>
        <input type="file" name="photo" value=""/>
        </div>
        <div class="label-field">
        <label for="Link">
            Liên kết</label>
        <input type="text" name="Link"/>
        </div>
        <p>
            <input type="submit" value="Lưu" />
        </p>
<% } %>

Он также получает данные, но шаг обновления не удался: он отмечен прямо здесь

DataSource.DataContext.Refresh(System.Data.Linq.RefreshMode.KeepCurrentValues, homebanner);

и сгенерировать исключение: Объект, указанный для обновления, не распознан. Я не знаю почему, я вижу данные, заполненные объектом, когда я отлаживаю. Пожалуйста, кто-нибудь, помогите мне!

Ответы [ 2 ]

1 голос
/ 24 января 2012

Проверьте экземпляр DataContext там, возможно, вы используете другой экземпляр, в котором исходный объект не существует.

Если он не существует, вы должны сначала присоединить объект к контексту данных, а затем вызвать обновление.

PS совет: создайте модель или сервис для взаимодействия с данными, в контроллере это выглядит грязно;) '

0 голосов
/ 23 апреля 2018

Я столкнулся с этой ошибкой, потому что пытался обновить только что созданный объект, который еще не существовал в базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...