我遇到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没有从数据库中读取值。
我希望你能帮助我。
答案 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会自动从您的表单操作中发布。