Я бы порекомендовал вам использовать только стандартные буквы и цифры ASCII при именовании переменных и классов.Привязка модели по умолчанию использует эти имена при попытке связать свойства из запроса POST.Кроме того, поскольку эти имена свойств используются в качестве атрибутов name и id элементов ввода в HTML, в результате получается недопустимый HTML в соответствии с спецификацией , которая гласит:
- ID и NAMEтокены должны начинаться с буквы ([A-Za-z]) и могут сопровождаться любым количеством букв, цифр ([0-9]), дефисов ("-"), подчеркиваний ("_"), двоеточий (":") и точки (".").
Поэтому не следует использовать расширенные символы ASCII или Unicode, такие как ł
и ż
.Замените их соответствующими символами ASCII, и механизм связывания модели по умолчанию сможет исправить выборку значений.
ОБНОВЛЕНИЕ:
После просмотра примера кода, который вы отправили мне в редакторев данный момент у вас есть 3 формы:
@model Restauracja.Models.pracownikModel
@{
ViewBag.Title = "Edit";
}
<h2>Edit</h2>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Edit</legend>
<div class="editor-label">
@Html.LabelFor(model => model.LoginModel.Uzytkownik)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.LoginModel.Uzytkownik)
@Html.ValidationMessageFor(model => model.LoginModel.Uzytkownik)
</div>
</fieldset>
}
<table id="nostyle">
<tr>
<td>
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<input type="submit" value="Save" />
}
</td>
<td>
@using (Html.BeginForm("Anuluj", "Pracownik", FormMethod.Post, new { id = "AnulujForm" }))
{
<input id="Anuluj" type="submit" value="Cancel" />
}
</td>
</tr>
</table>
Первая форма является единственной, которая содержит поля ввода для вашей модели.Таким образом, отправляя только первую форму, можно ожидать, что она заполнит некоторые свойства вашей модели в действии POST.К сожалению, эта первая форма не имеет кнопки отправки, поэтому вы не можете отправить ее.Вторая и третья формы содержат кнопки отправки, но они не содержат никаких полей ввода, поэтому отправка их оставит модель полностью пустой.
Итак, вам нужно переместить кнопку Сохранить отправку внутри первой формы:
@model Restauracja.Models.pracownikModel
@{
ViewBag.Title = "Edit";
}
<h2>Edit</h2>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<fieldset>
<legend>Edit</legend>
<div class="editor-label">
@Html.LabelFor(model => model.LoginModel.Uzytkownik)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.LoginModel.Uzytkownik)
@Html.ValidationMessageFor(model => model.LoginModel.Uzytkownik)
</div>
</fieldset>
@:<table id="nostyle">
@:<tr>
@:<td>
<input type="submit" value="Save" />
@:</td>
}
<td>
@using (Html.BeginForm("Anuluj", "Pracownik", FormMethod.Post, new { id = "AnulujForm" }))
{
<input id="Anuluj" type="submit" value="Cancel" />
}
</td>
</tr>
</table>
или поскольку кнопка «Отмена» отправляет текущее действие контроллера, тат выполняет перенаправление, вы можете просто заменить его привязкой, которая будет перенаправлять:
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<fieldset>
<legend>Edit</legend>
<div class="editor-label">
@Html.LabelFor(model => model.LoginModel.Uzytkownik)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.LoginModel.Uzytkownik)
@Html.ValidationMessageFor(model => model.LoginModel.Uzytkownik)
</div>
</fieldset>
<table id="nostyle">
<tr>
<td>
<input type="submit" value="Save" />
</td>
<td>
@Html.ActionLink("Cancel", "zarzadzaj_pracownikami", "Pracownik")
</td>
</tr>
</table>
}