FormMethod.Post返回0

时间:2017-09-14 18:16:11

标签: c# html post entity-framework-6 asp.net-mvc-5

我遇到FormMethod Post的问题,我试图发布一个单独的值(id)并将其存储在Session变量中,但该值返回0.

这是我的代码。

 @foreach (var item in Model)
                {
                    using (@Html.BeginForm("Index", "ProductSelec", FormMethod.Post))
                    {

                        @Html.HiddenFor(modelItem => item.id, new { value = "@Html.DisplayFor(modelItem => item.id)" })

                        <div class="AppOpt">
                            <button type="submit" name="submit" style="background-image: url('../Content/ICONS/SystemApp/@Html.DisplayFor(modelItem => item.img)');border-radius: 20px;background-size: cover;background-repeat: no-repeat;" class="AppImg">
                                <div class="OptNameRec">
                                    <div class="OptIcon">
                                        <img src='~/Content/ICONS/@Html.DisplayFor(modelItem => item.icon)'>
                                    </div>
                                    <div>
                                        <p>@Html.DisplayFor(modelItem => item.nombre)</p>
                                    </div>
                                    <div class="clear"></div>
                                </div>
                                <div class="OptImage"></div>
                            </button>
                        </div>
                    }
                }

表单在foreach中,因为我正在从数据库中创建元素。

我想存储item.id点击。

这是我的控制器

        public ActionResult Index()
    {
        return View(db.aplicaciones.ToList());
    }

    public ActionResult ProductFamily()
    {
        return View();
    }

    [HttpPost]
    public int Index(aplicaciones aplicaciones)
    {
        Session["appID"] = aplicaciones.id;

        return aplicaciones.id;

    }

这是我的模特。

  public partial class aplicaciones
{
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
    public aplicaciones()
    {
        this.appNfam = new HashSet<appNfam>();
    }

    public int id { get; set; }
    public string nombre { get; set; }
    public string icon { get; set; }
    public string img { get; set; }

    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
    public virtual ICollection<appNfam> appNfam { get; set; }
}

我正在尝试创建另一个模型,但是当我添加时,foreach没有从数据库中读取值。

我希望你能帮助我。

1 个答案:

答案 0 :(得分:1)

将您的控制器方法更改为:

[HttpPost]
public int Index(int id)
{
    Session["appID"] = id;

    return id;
}

将您的Html.BeginForm更改为:

@using (Html.BeginForm("Index", "ProductSelec", new { id = item.id },FormMethod.Post, new { })

您还应该能够删除隐藏字段,因为ID会自动从您的表单操作中发布。