Почему моя форма не публикует какие-либо данные, хотя я установил свойство name? - PullRequest
0 голосов
/ 22 января 2020

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

Как Вы можете видеть, что это простая форма, которая использует бритву, и я установил имя и свойства id элементов, которые я хочу отправить

<table class="table table-hover mb-0">
                            <thead>
                                <tr>
                                    <th>#</th>
                                    <th>Name</th>
                                    <th>Version</th>
                                </tr>
                            </thead>
                            <tbody>
                                @foreach (var _model in Model)
                                {

                                <tr>

                                    @using (Html.BeginForm("Start", "Dashboard", FormMethod.Post))
                                    {
                                    <div class="form-group">
                                        <td id="serverid" name="serverid">@Html.DisplayTextFor(x => _model.ServerID) @Html.HiddenFor(x => _model.ServerID)</td>
                                        <td>
                                            @Html.DisplayTextFor(x => _model.ServerName) @Html.HiddenFor(x => _model.ServerName)
                                        </td>
                                        <td>
                                            @Html.DisplayTextFor(x => _model.Version) @Html.HiddenFor(x => _model.Version)
                                        </td>
                                        <td>
                                            <button type="submit" asp-action="Start" asp-controller="Dashboard" class="btn btn-icon waves-effect waves-light btn-success" onclick="Start('@_model.ServerName')"> <i class="fa fa-power-off"></i> </button>
                                        </td>
                                    </div>
                                    }
                                </tr>
                                }


                            </tbody>

                        </table>

И вот как выглядит модель

public class ServerModel
{
    public string ServerID { get; set; }
    public string ServerName { get; set; }
}

А вот действие, которое находится внутри контроллера

//The "model" parameter here exists, but all the properties are null when inspecting it
public async Task<IActionResult> Start(ServerModel model)
        {
            //Doing stuff here
        }

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

Ответы [ 2 ]

0 голосов
/ 23 января 2020

Во-первых, вы можете удалить onclick="Start('@_model.ServerName')" кнопку отправки, так как вы передаете данные через форму сообщения, затем измените следующие коды:

@Html.HiddenFor(x => _model.ServerID)
@Html.HiddenFor(x => _model.ServerName)

Кому:

<input name="ServerID" type="hidden" value="@_model.ServerID">
<input name="ServerName"   type="hidden" value="@_model.ServerName">

Так оно будет соответствовать имени с именем свойства модели во время привязки модели.

0 голосов
/ 22 января 2020

Измените кнопку отправки на -

<button type="submit" class="btn btn-icon waves-effect waves-light btn-success"> <i class="fa fa-power-off"></i> </button>

Поскольку вы находитесь внутри элемента формы (генерируемого beginform), вам не нужны дополнительные атрибуты. Также не совсем уверен, что ваши намерения с -

onclick="Start('@_model.ServerName')
...