0

このビューモデルがあるとします:

public class CreateGameViewModel
{
    [Required]
    public string SideA { get; set; }

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

    [HiddenInput(DisplayValue = false)]
    public IEnumerable<int> ConfigurableCategoryIDs { get; set; }
}

そして、これらのアクション:

    [HttpGet]
    public ActionResult Create()
    {
        var viewModel = new CreateGameViewModel { ConfigurableCategoryIDs = new List { 1, 1, 1 } };
        return View(viewModel);
    }

    [HttpPost]
    public ActionResult Create(CreateGameViewModel viewModel)
    {
    ...
    }

そして、ビューで ConfigurableCategoryIDs の値を編集しようとしました:

    @for (int i = 0; i < Model.ConfigurableCategoryIDs.Count(); i++)
    {
        var item = Model.ConfigurableCategoryIDs.ElementAt(@i);
        @Html.EditorFor(m => item)
    }

CreateGameViewModel.ConfigurableCategoryIDsは Create(CreateGameViewModel viewModel) に null として返されますが、SideA と SideB には値があります。

解説と解決策をよろしくお願いします!ありがとう

4

1 に答える 1

0

次に試してください:

モデル:

public class CreateGameViewModel
{
    [Required]
    public string SideA { get; set; }

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

    [HiddenInput(DisplayValue = false)]
    public List<int> ConfigurableCategoryIDs { get; set; }
}

コントローラ:

    [HttpGet]
    public ActionResult Create()
    {
        var viewModel = new CreateGameViewModel { ConfigurableCategoryIDs = new List<int> { 1, 1, 1 } };
        return View(viewModel);
    }

    [HttpPost]
    public ActionResult Create(CreateGameViewModel viewModel)
    {
        return View();
    }

意見:

@model MvcApplication1.Models.CreateGameViewModel

@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
    <legend>CreateGameViewModel</legend>

    <div class="editor-label">
        @Html.LabelFor(model => model.SideA)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.SideA)
        @Html.ValidationMessageFor(model => model.SideA)
    </div>

    <div class="editor-label">
        @Html.LabelFor(model => model.SideB)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.SideB)
        @Html.ValidationMessageFor(model => model.SideB)
    </div>

    @for (int i = 0; i < Model.ConfigurableCategoryIDs.Count(); i++)
    {
        @Html.EditorFor(m => Model.ConfigurableCategoryIDs[i])
    }

    <p>
        <input type="submit" value="Create" />
    </p>
</fieldset>
}
于 2012-09-02T19:46:24.953 に答える