Простой ASP.NET MVC 2 Вопрос - Использование редактора скаффолда - PullRequest
0 голосов
/ 21 ноября 2010

Доброе утро,

Я использую эшафот для редактирования. Вот два бита кода: Код контроллера:

        public ActionResult Edit(int id)
        {
            var viewModel = new ListingManagerViewModel
            {
                Listing = AfvClassifiedsDB.Listings.Single(l => l.ListingID == id),
                Categories = AfvClassifiedsDB.Categories.ToList(),
            };

            return View(viewModel);
        }

        //
        // POST: /ListingManager/Edit/5

        [HttpPost]
        public ActionResult Edit(int id, FormCollection collection)
        {
            var listing = AfvClassifiedsDB.Listings.Single(l => l.ListingID == id);
            try
            {
                // Save the changes to Listing.

                UpdateModel(listing, "Listings");
                AfvClassifiedsDB.SaveChanges();

                return RedirectToAction("Index");
            }
            catch
            {
                // An error has occured so redisplay the form instead.

                var viewModel = new ListingManagerViewModel
                {
                    Listing = listing,
                    Categories = AfvClassifiedsDB.Categories.ToList(),
                };

                return View(viewModel);
            }
        }

Посмотреть код:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<AfvClassifieds.ViewModels.ListingManagerViewModel>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    Edit
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

    <h2>Edit</h2>

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

        <fieldset>
            <legend>Fields</legend>

            <%: Html.EditorFor(model => Model.Listing, new { Categories = Model.Categories })%>

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

    <% } %>

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

</asp:Content>

Кажется, это работает, но когда вы отправляете форму, значения не изменяются. Это было создано с использованием музыкального магазина MVC в качестве руководства. Нет ошибок, но созданные мной значения формы не отправляются.

1 Ответ

0 голосов
/ 21 ноября 2010

Можете ли вы опубликовать метод UpdateModel?Однако очевидно, что вы ничего там не обновляете.Вы ничего не сделали для коллекции форм FormCollection collection.FormCollection - это фактические данные формы, которые вставляются пользователем, поэтому вы должны взять все значения из них и сохранить их в дБ.

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