ASP.MVC 2 Модель данных устойчивости - PullRequest
1 голос
/ 16 июня 2010

Я и программист MVC1, новичок в MVC2.

Данные не будут сохранены в базе данных в сценарии редактирования. Создание отлично работает.

Контроллер:

    //
    // POST: /Attendee/Edit/5

    [Authorize(Roles = "Admin")]
    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Edit(Attendee attendee)
    {

        if (ModelState.IsValid)
        {
            UpdateModel(attendee, "Attendee");
            repository.Save();

            return RedirectToAction("Details", attendee);
        }
        else
        {
            return View(attendee);
        }
    }

Модель:

[MetadataType(typeof(Attendee_Validation))]
public partial class Attendee
{
}

public class Attendee_Validation
{

    [HiddenInput(DisplayValue = false)]
    public int attendee_id { get; set; }

    [HiddenInput(DisplayValue = false)]
    public int attendee_pin { get; set; }

    [Required(ErrorMessage = "* required")]
    [StringLength(50, ErrorMessage = "* Must be under 50 characters")]
    public string attendee_fname { get; set; }

    [StringLength(50, ErrorMessage = "* Must be under 50 characters")]
    public string attendee_mname { get; set; }
}

Я пытался добавить [Bind (Exclude = "attendee_id")] над объявлением класса, но затем значение атрибута accedee_id установлено в '0'.

Вид (строго типизированный):

<% using (Html.BeginForm()) {%>
    ...
    <%=Html.Hidden("attendee_id", Model.attendee_id) %>
    ...
    <%=Html.SubmitButton("btnSubmit", "Save") %>
<% } %>

В основном, хранилище. Save (); функция, кажется, ничего не делает. Я предполагаю, что это как-то связано с нарушением ограничения первичного ключа. Но я не получаю никаких ошибок от SQL Server. Приложение работает нормально, но данные никогда не сохраняются в базе данных.

1 Ответ

0 голосов
/ 17 июня 2010

Понял! Вот решение:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(int id, FormCollection form)
{
    Attendee attendee = repository.GetAttendee(id);

    try
    {
        UpdateModel(attendee, form);
        repository.Save();

        return RedirectToAction("Details", attendee);
    }
    catch
    {
        return View(attendee);
    }
}

Была проблема с UpdateModel () ValueProvider.

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