首页 > 解决方案 > 将视图模型从视图传递到控制器的问题

问题描述

我将视图模型从视图传递到控制器时遇到问题。我不知道为什么,但我的控制器中的模型是空的。这是我的代码。

我的视图模型包括两个数据模型。

对不起这两行,但我必须在这里写一些愚蠢的东西,只是因为编辑器阻止了我的例子,因为看起来我的帖子主要是代码并促使我添加更多细节:-)

视图模型

    public class ModShopView
{
    public IEnumerable<ModShopText> Description { get; set; }
    public IEnumerable<ModShop> EshopItems { get; set; }

}

模型电子商品

    public class ModShop
{
    [Required]
    public int IdZbozi { get; set; }
    [Required]
    public string NazevZbozi { get; set; }
    [Required]
    public decimal Cena { get; set; }
    [Required]
    public int Vat { get; set; }

    public int Mnozstvi { get; set; }

}

控制器

        [HttpPost]
    public IActionResult Shop(ModShopView mymodel, IFormCollection collection)
    {
        //return View("objednavka");
        string result = string.Empty;
        string nazev = string.Empty;
        int pocet = 0;



        foreach (var items in collection)
        {

            if ((pocet = int.TryParse(items.Value, out pocet) ? pocet : 0) > 0)
            {
                if (!ModelState.IsValid)
                {
                    nazev = mymodel.EshopItems.Where(x => x.IdZbozi == Convert.ToInt32(items.Key)).Select(x => x.NazevZbozi).ToString();
                }

                result = "Key=" + items.Key + " value=" + items.Value + " název:" + nazev.ToString() + "<br/>" + result;

            }
        }

        return Content($"result: {result}");
    }

看法

@model MojeIdentita.Models.ModShopView
@using MojeIdentita.Helpers
@{
    string lang = (string)ViewContext.RouteData.Values["lang"] ?? "cz";
    ViewData["Title"] = Html.GetLangResourceHtml(lang, "menuShop", true);

}

<h1 class="text-left" role="heading" aria-level="1">@Html.GetLangResourceHtml(lang, "menuShop", true)</h1>
<div class="">
    <div>
        @Html.Raw(Model.Description.FirstOrDefault().Part1)
    </div>


    @using (Html.BeginForm())
    {
        @foreach (var Polozky in Model.EshopItems)
        {

            <div class="row">
                <div class="col-md-3 col-sm-6 col-xs-12 city"><p>@Polozky.NazevZbozi</p></div>
                <div class="col-md-3 col-sm-6 col-xs-12"><p>@Polozky.Vat</p></div>
                <div class="col-md-3 col-sm-6 col-xs-12"><p>@Polozky.Cena</p></div>
                <div class="col-md-3 col-sm-6 col-xs-12"><p><input type="text" id="inputpocet" name="@Polozky.IdZbozi" /></p></div>
            </div>

        }
        <input type="submit" value="@Html.GetLangResourceHtml(lang, "txtObjednat", true)" class="order" />
    }

    </div>


拜托,你能帮我找出我犯错的地方吗?谢谢

标签: c#asp.net-mvcmodel-view-controller

解决方案


推荐阅读