Проблема с обновлением данных в приложении asp .NET MVC 2 - PullRequest
2 голосов
/ 10 мая 2010

Я только начинаю работать с приложениями asp .NET MVC 2 и наткнулся на проблему. У меня проблемы с обновлением моих таблиц. Отладчик не сообщает об ошибке, просто ничего не делает ... Я надеюсь, что некоторые из них помогут мне. Спасибо за ваше время. Это код моего контроллера ...

public ActionResult Edit(int id)
    {
        var supplierToEdit = (from c in _entities.SupplierSet
                              where c.SupplierId == id
                              select c).FirstOrDefault();

        return View(supplierToEdit);
    }

    //
    // POST: /Supplier/Edit/5

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Edit(Supplier supplierToEdit)
    {
        if (!ModelState.IsValid)
            return View();

        try
        {
            var originalSupplier = (from c in _entities.SupplierSet
                                    where c.SupplierId == supplierToEdit.SupplierId
                                    select c).FirstOrDefault();

            _entities.ApplyPropertyChanges(originalSupplier.EntityKey.EntitySetName, supplierToEdit);
            _entities.SaveChanges();
            // TODO: Add update logic here

            return RedirectToAction("Index");
        }
        catch
        {
            return View();
        }
    }

Это мой взгляд ...

<h2>Edit</h2>

<% using (Html.BeginForm()) {%>
    <%= Html.ValidationSummary(true) %>

    <fieldset>
        <legend>Fields</legend>



        <div class="editor-label">
            <%= Html.LabelFor(model => model.CompanyName) %>
        </div>
        <div class="editor-field">
            <%= Html.TextBoxFor(model => model.CompanyName) %>
            <%= Html.ValidationMessageFor(model => model.CompanyName) %>
        </div>

        <div class="editor-label">
            <%= Html.LabelFor(model => model.ContactName) %>
        </div>
        <div class="editor-field">
            <%= Html.TextBoxFor(model => model.ContactName) %>
            <%= Html.ValidationMessageFor(model => model.ContactName) %>
        </div>

        <div class="editor-label">
            <%= Html.LabelFor(model => model.ContactTitle) %>
        </div>
        <div class="editor-field">
            <%= Html.TextBoxFor(model => model.ContactTitle) %>
            <%= Html.ValidationMessageFor(model => model.ContactTitle) %>
        </div>

        <div class="editor-label">
            <%= Html.LabelFor(model => model.Address) %>
        </div>
        <div class="editor-field">
            <%= Html.TextBoxFor(model => model.Address) %>
            <%= Html.ValidationMessageFor(model => model.Address) %>
        </div>

        <div class="editor-label">
            <%= Html.LabelFor(model => model.City) %>
        </div>
        <div class="editor-field">
            <%= Html.TextBoxFor(model => model.City) %>
            <%= Html.ValidationMessageFor(model => model.City) %>
        </div>

        <div class="editor-label">
            <%= Html.LabelFor(model => model.PostalCode) %>
        </div>
        <div class="editor-field">
            <%= Html.TextBoxFor(model => model.PostalCode) %>
            <%= Html.ValidationMessageFor(model => model.PostalCode) %>
        </div>

        <div class="editor-label">
            <%= Html.LabelFor(model => model.Country) %>
        </div>
        <div class="editor-field">
            <%= Html.TextBoxFor(model => model.Country) %>
            <%= Html.ValidationMessageFor(model => model.Country) %>
        </div>

        <div class="editor-label">
            <%= Html.LabelFor(model => model.Telephone) %>
        </div>
        <div class="editor-field">
            <%= Html.TextBoxFor(model => model.Telephone) %>
            <%= Html.ValidationMessageFor(model => model.Telephone) %>
        </div>

        <div class="editor-label">
            <%= Html.LabelFor(model => model.Fax) %>
        </div>
        <div class="editor-field">
            <%= Html.TextBoxFor(model => model.Fax) %>
            <%= Html.ValidationMessageFor(model => model.Fax) %>
        </div>

        <div class="editor-label">
            <%= Html.LabelFor(model => model.HomePage) %>
        </div>
        <div class="editor-field">
            <%= Html.TextBoxFor(model => model.HomePage) %>
            <%= Html.ValidationMessageFor(model => model.HomePage) %>
        </div>

        <p>
            <input type="submit" value="Save" />
        </p>
    </fieldset>

<% } %>

<div>
    <%= Html.ActionLink("Back to List", "Index") %>
</div>

Ответы [ 3 ]

0 голосов
/ 10 мая 2010

Я рискну угадать и скажу, что ваша переменная _entities равна нулю, когда вы пытаетесь запустить метод ApplyPropertyChanges.

Это приведет к

Ссылка на объект не установлена ​​на экземпляр объекта

ошибка, которую нужно выбросить.

0 голосов
/ 23 сентября 2011

попробуйте

    [AcceptVerbs(HttpVerbs.Post)]
  public ActionResult Edit(Supplier supplierToEdit)
{
    if (!ModelState.IsValid)
        return View();

    try
    {
        var originalSupplier = (from c in _entities.SupplierSet
                                where c.SupplierId == supplierToEdit.SupplierId
                                select c).FirstOrDefault();
  _entities.UpdateModel(originalSupplier);
        _entities.ApplyPropertyChanges(originalSupplier.EntityKey.EntitySetName, supplierToEdit);
        _entities.SaveChanges();
        // TODO: Add update logic here

        return RedirectToAction("Index");
    }
    catch
    {
        return View();
    }
}
0 голосов
/ 10 мая 2010

Думаю, вы получаете исключение. Попробуйте сгенерировать исключение в операторе Try catch

try
{
    var originalSupplier = (from c in _entities.SupplierSet
                            where c.SupplierId == supplierToEdit.SupplierId
                            select c).FirstOrDefault();

    _entities.ApplyPropertyChanges(originalSupplier.EntityKey.EntitySetName, supplierToEdit);
    _entities.SaveChanges();
    // TODO: Add update logic here

    return RedirectToAction("Index");
}
catch(Exception ex)
{
    throw ex;
    return View();
}

Потому что я думаю, это что-то подстилающее.

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