我有一个表单,我想发布以确保页面在发布数据时更新(不是ajax方式)。问题是我真的只想发布记录的Id并在控制器方法中提取它。我发现表单正在发布所有内容(我可能无法解析,因为相同的表单用于更新)。但我希望能够将变量弹出到控制器方法的参数中,而不是从FormCollection中提取。我已经尝试了下面的各种参数,但都被传递为null。知道问题是什么吗?
我的控制器方法中有以下内容:
public ActionResult Delete(FormCollection collection)
{
var idToDelete = collection["Current.CommissionStructureId"].ToInt32();
}
// tried the following but none of them bind
public ActionResult Delete(int? Current_CommissionStructureId, int? CommissionStructureId, int? Id, int? id)
{
// none of the above are binding (set to null)
}
答案 0 :(得分:0)
您应该仅将HttpPost用于删除记录
@using (Html.BeginForm()) {
<input type="hidden" name="CommissionStructureId" value="@item.CommissionStructureId" />
<p>
<input type="submit" value="Delete" />
</p>
<p>
@Html.ActionLink("Back to List", "Index")
</p>
}
[HttpPost]
public ActionResult Delete(int CommissionStructureId)
{
CommissionStructure commissionStructure = db.CommissionStructures.Find(CommissionStructureId);
db.CommissionStructures.Remove(commissionStructure);
db.SaveChanges();
return RedirectToAction("Index");
}
答案 1 :(得分:0)
当您的表单值命名为Current.CommissionStructureId
时,默认的模型绑定器将仅将其绑定到名为Current
的类参数,并使用名为Id
的属性。
所以你的选择是
Id
的小类,并将其用作参数类型或