为什么HiddenFor在MVC 5中的post action方法中获取null值?

时间:2015-10-05 05:48:55

标签: c# asp.net-mvc razor

每当我发布表单时,我都有一个局部视图,hiddenfor获取null值。当我添加新的它时,它获取空值,但当我编辑,它工作正常。 我使用此代码检查错误。

var errors = ModelState
    .Where(x => x.Value.Errors.Count > 0)
    .Select(x => new { x.Key, x.Value.Errors })
    .ToArray();

错误表示id字段是必需的。 我正在使用@Html.HiddenFor(model => model.Id) 表单是ajax.beginform 有什么问题?

编辑:

[HttpGet]
        public ActionResult ProductPartial(int Id = -1)
        {
            var ProductService = new ProductService();

            var Product = new Product();
            bool editMode = ProductId > 0;

            if (editMode)
            {
                var ProductId = Convert.ToInt32(ProductId);
                var entity = ProductService.GetByProductId(null, ProductId);
                Product.Id = entity.ProductId;
                Product.ProductName = entity.ProductName;

            }

            return PartialView(Product);
        }

        [HttpPost]
        public JsonResult ProductPartial(Product Product)
        {
           //Product id gets null
           //Perfome some action


            return Json(returnData);
        }
Product class
 public abstract class ProductBase
{
    public virtual int Id{set;get}
    public virtual string Name {set;get}

}

public class Product : ProductBase
{}

1 个答案:

答案 0 :(得分:-2)

这有效:

 // Controller
    [HttpPost]
    public ActionResult Send(BitcoinTransactionViewModel **RedeemTransaction**)
    {
    }

    // View
    @using (Html.BeginForm("Send", "DepositDetails", FormMethod.Post, new { **RedeemTransaction** = Model }))
    {

    @Html.HiddenFor(m => m.Token);
    @Html.HiddenFor(m => m.Transaction.TransactionId);
    .
    .