Редактор за потерю данных на посту - PullRequest
0 голосов
/ 05 июня 2018

Мне нужна помощь с этим, пожалуйста!

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

public class MyModel
    {

        public int Id { get; set; }

        public string Name { get; set; }

        public string Value { get; set; }
    }

У меня также есть EditorTemplate

@model MyProject.Models.MyModel

<div class="form-group">
    <label class="col-md-2 control-label">@Html.DisplayFor(model => model.Name)</label>
    <div class="col-md-10">
        <input asp-for="@Model.Value" class="form-control"/>
        <span asp-validation-for="@Model.Value" class="text-danger"></span>
    </div>
</div>

Вид редактирования

@using Microsoft.AspNetCore.Mvc.ViewFeatures
@model List<MyProject.Models.MyModel>
@{
    ViewData["Title"] = "Edit";
}
<div class="spaceUnderLogo">

    <div class="row">
        <div class="col-md-12 ">
            <h2>Edit</h2>
            <form id="manageMyModel" asp-controler="MyController" asp-action="Edit" method="post" class="">
                <div class="form-horizontal">
                    <hr />

                    @Html.EditorForModel()

                    <div class="form-group">
                        <div class="col-md-offset-2 col-md-10">
                            <input type="submit" value="Save" class="btn btn-primary" />
                        </div>
                    </div>
                </div>
            </form>
        </div>
    </div>
</div>

И у MyController есть два метода:

[HttpGet]
public async Task<IActionResult> Edit()
    {

        List<MyModel> model = await GetCurrentInfoAsync();
        return View(model);
    }


    [HttpPost]
    public async Task<ActionResult> Edit(List<MyModel> model)
    {
        // here is where I have the issue
    }

Как видите, у меня проблема с методом post.Когда я получаю представление, я отправляю 2 объекта: {Id = 1, Name = "A", Value = "9999"} и {Id = 2, Name = "B", Value = null}

РедактироватьB Значение свойства равно "8888", и в сообщении я получаю список только со свойством Value, например: {Id = 0, Name = null, Value = "9999"} и {Id = 0, Name = null,Значение = "8888"}

Есть идеи?

1 Ответ

0 голосов
/ 05 июня 2018

Вы можете использовать:

@model MyProject.Models.MyModel

@Html.HiddenFor(model => model.Id)
@Html.HiddenFor(model => model.Name)

<div class="form-group">
    <label class="col-md-2 control-label">@Html.DisplayFor(model => model.Name)</label>
    <div class="col-md-10">
        <input asp-for="@Model.Value" class="form-control"/>
        <span asp-validation-for="@Model.Value" class="text-danger"></span>
    </div>
</div>    

Хитрость здесь заключается в следующем:

@Html.HiddenFor(model => model.Id)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...