ASP.MVC 2 RTM + Ошибка ModelState в свойстве Id

У меня есть это классы:

public class GroupMetadata
{
    [HiddenInput(DisplayValue = false)]
    public int Id { get; set; }

    [Required]
    public string Name { get; set; }
}

[MetadataType(typeof(GrupoMetadata))]
public partial class Group
{
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
}

И это действие:

[HttpPost]
public ActionResult Edit(Group group)
{
    if (ModelState.IsValid)
    {
        // Logic to save
        return RedirectToAction("Index");
    }

    return View(group);
}

Это - мое представление:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<Group>" %>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <% using (Html.BeginForm()) {%>
        <fieldset>
            <%= Html.EditorForModel() %>
            <p>
                <input type="submit" value="Save" />
            </p>
        </fieldset>
    <% } %>
    <div>
        <%=Html.ActionLink("Back", "Index") %>
    </div>
</asp:Content>

Но ModelState всегда недопустим! Как я вижу, для проверки MVC 0 недопустимо, но для меня допустимо. Как я могу зафиксировать его с тех пор, я не помещал вида проверки в свойстве Id?

ОБНОВЛЕНИЕ: Я не знаю, как или почему, но идентификатор переименования, в моем случае к PK, решает эту проблему.

Вы знаете, является ли это проблема в моей логике/конфигурации или ошибкой или ожидаемым поведением?

7
задан Marcos Dimitrio 16 October 2015 в 17:59
поделиться

3 ответа

Непосредственно перед if (ModelState.IsValid) удалить индекс Id, используя эту строку ModelState.Remove ("Id") таким образом, когда команда MVC удаляет эта ошибка, вам просто нужно удалить этот строковый код ваших проектов.

9
ответ дан 6 December 2019 в 23:04
поделиться

У вас есть обязательное поле, Id . Это необходимо, потому что не допускает значения NULL. Вы должны либо (1) отправить его вместе с формой, либо (2) изменить модель, чтобы сделать Id обнуляемым, либо (3) использовать другой тип.

1
ответ дан 6 December 2019 в 23:04
поделиться

Ваша проблема в том, что вы используете свойство с именем 'id' в вашей модели. Попробуйте использовать другое имя, и вы увидите, что оно работает. Похоже, что у Mvc с этим проблемы.

У меня возникла точно такая же проблема.

0
ответ дан 6 December 2019 в 23:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: