Успешное редактирование модели без множества скрытых полей

In Short: Как мне успешно отредактировать запись в БД без необходимости включать каждое отдельное поле для модели в окне редактирования?

UPDATE
Итак, у меня есть пункт в БД (статья). Я хочу редактировать статью. Статья, которую я редактирую, имеет много свойств (Id, CreatedBy, DateCreated, Title, Body). Некоторые из этих свойств никогда не нужно изменять (например, Id, CreatedBy, DateCreated). Поэтому в моем редактируемом представлении я хочу только поля ввода для полей, которые можно изменить (например, заголовок, текст). Когда я реализую вид редактирования таким образом, привязка модели завершается неудачно. Любые поля, для которых я не предоставил входные данные, устанавливаются на некоторые значения по умолчанию. значение (например, DateCreated устанавливается 01/01/0001 12:00:00 утра). Если яdo Введите входные данные для каждого поля, все работает нормально и статья отредактирована, как и ожидалось Я не знаю, правильно ли говорить, что «Привязка модели не удалась». обязательно, так что "система заполняет поля неверными данными, если для них не было введено поле ввода в представлении редактирования".

Как я могу создать представление редактирования таким образом, что мне нужно только указать поля ввода для полей, которые могут / нуждаются в редактировании, чтобы при вызове метода редактирования в контроллере поля, такие как DateCreated, заполнялись правильно, а не устанавливались по умолчанию, неправильное значение? Вот мой метод Edit в его нынешнем виде:

    [HttpPost]
    public ActionResult Edit(Article article)
    {
        // Get a list of categories for dropdownlist
        ViewBag.Categories = GetDropDownList();


        if (article.CreatedBy == (string)CurrentSession.SamAccountName || (bool)CurrentSession.IsAdmin)
        {                
            if (ModelState.IsValid)
            {
                article.LastUpdatedBy = MyHelpers.SessionBag.Current.SamAccountName;
                article.LastUpdated = DateTime.Now;
                article.Body = Sanitizer.GetSafeHtmlFragment(article.Body);

                _db.Entry(article).State = EntityState.Modified;
                _db.SaveChanges();
                return RedirectToAction("Index", "Home");
            }
            return View(article);
        }

        // User not allowed to edit
        return RedirectToAction("Index", "Home");   
    }

И Edit View, если это поможет:

. . .
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)

<fieldset>
    <legend>Article</legend>

    <p>
        <input type="submit" value="Save" /> | @Html.ActionLink("Back to List", "Index")
    </p>

    @Html.Action("Details", "Article", new { id = Model.Id })

    @Html.HiddenFor(model => model.CreatedBy)
    @Html.HiddenFor(model => model.DateCreated)

    <div class="editor-field">
        <span>
            @Html.LabelFor(model => model.Type)
            @Html.DropDownListFor(model => model.Type, (SelectList)ViewBag.Categories)
            @Html.ValidationMessageFor(model => model.Type)
        </span>
        <span>
            @Html.LabelFor(model => model.Active)
            @Html.CheckBoxFor(model => model.Active)
            @Html.ValidationMessageFor(model => model.Active)
        </span>
        <span>
            @Html.LabelFor(model => model.Stickied)
            @Html.CheckBoxFor(model => model.Stickied)
            @Html.ValidationMessageFor(model => model.Stickied)
        </span>            
    </div>

    <div class="editor-label">
        @Html.LabelFor(model => model.Title)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Title)
        @Html.ValidationMessageFor(model => model.Title)
    </div>
    <div class="editor-label">
        @Html.LabelFor(model => model.Body)
    </div>
    <div class="editor-field">
        @* We set the id of the TextArea to 'CKeditor' for the CKeditor script to change the TextArea into a WYSIWYG editor. *@
        @Html.TextAreaFor(model => model.Body, new { id = "CKeditor", @class = "text-editor" })
        @Html.ValidationMessageFor(model => model.Body)
    </div>
</fieldset>
. . .

Если бы я пропустил эти два входа:

@Html.HiddenFor(model => model.CreatedBy)
@Html.HiddenFor(model => model.DateCreated)

когда вызывается метод Edit, они устанавливаются в значения по умолчанию. CreatedBy установлен вNullСоздано установлено в01/01/0001 12:00:00am

Почему они не установлены в значения, как они в настоящее время установлены в БД?

Ответы на вопрос(5)

Ваш ответ на вопрос