Данные из частичного просмотра не публикуются - PullRequest
0 голосов
/ 24 июня 2019

У меня есть следующая страница:

<form method="post">
<hr />
<h4>Alert</h4>
<div class="card-overview">
    <div class="card-columns">
        <partial name="_Alert" model="Model.Details.AlertPageModel" />
    </div>
</div>

Мой частичный вид выглядит следующим образом:

@model AlertPageModel
<div class="card">
<div class="card-body">
    @Html.TextBox("AlertPageModel.AlertDate", Model.AlertDate)
    @Html.TextBox("AlertPageModel.Message", Model.Message)
</div>

Это приводит к моемучастичное представление выглядит следующим образом:

<input id="AlertPageModel_Message" name="AlertPageModel.Message" type="text" value="">
<input id="AlertPageModel_AlertDate" name="AlertPageModel.AlertDate" type="text" value="24/06/2019 10:23:12">

Теперь, когда я делаю пост страницы, моя AlerPageModel остается пустой.Я думал, что это будет заполнено таким образом.Чего мне не хватает?

1 Ответ

1 голос
/ 24 июня 2019

Имя элемента сопоставляется со свойством в модели, когда форма отправляется обратно.Похоже, имена не верны.Вам нужно будет указать имя TextBox, как показано ниже, чтобы оно было размещено в свойстве:

@Html.TextBox("Details.AlertPageModel.AlertDate", Model.AlertDate)
@Html.TextBox("Details.AlertPageModel.AlertPageModel.Message", Model.Message)

Поскольку ваша модель AlertPageModel является свойством Details свойства в вашем основном классе Model, нам нужноправильно укажите имя, чтобы оно отображалось на соответствующий объект Model, и Model Binder может выяснить, нужно ли сопоставить это значение с каким конкретным свойством в объекте Model.

В качестве альтернативы вы можете использовать EditorFor и определитьшаблон редактора вместо частичного, который заботится о префиксе собственного имени, чтобы оно правильно связывалось в форме сообщения.Вы можете прочитать больше об этом в следующем посте:

https://www.codeproject.com/Articles/1079909/ASP-NET-MVC-Partial-Views-with-Partial-Models

Надеюсь, это имеет смысл.

...