为什么httpPost模型总是为空?

时间:2012-10-15 05:08:30

标签: c# asp.net-mvc

我得到并发布控制器。 但是通过httpPost comtroller传递模型参数值为null。 为什么我的httpPost模型参数值总是为空?

[HttpGet]
        public ActionResult HireItem()
        {

            var HireItemListModel = new HireItemModel();

            HireItemListModel = new HireItemModel()
            {
                first_name = Session["first_name"].ToString(),
                middle_name = Session["middle_name"].ToString(),
                last_name = Session["last_name"].ToString(),
                ceremony_date = Session["ceremony_date"].ToString(),
            };         


            var product = _productService.GetAllHireProducts();

            if (product.Count != 0)
            {

                foreach (var proValue in product)
                {
                    var productVarSeparateList = _productService.GetHireProductVariantsByProductIds(proValue.Id, false);

                    foreach (var HireProSep in productVarSeparateList)
                    {
                        var productVarSeparateModel = new HireItemModel.HireItemSeparatetModel()
                        {
                            pname = HireProSep.Name,
                            price =HireProSep.Price,
                            pId=HireProSep.Id,

                        };
                        HireItemListModel.HireItemSeparatetlist.Add(productVarSeparateModel);
                    }
                    var productVarSetList = _productService.GetHireProductVariantsByProductIds(proValue.Id, true);

                    foreach (var HireProset in productVarSetList)
                    {
                        var productVarListset = new HireItemModel.HireItemSetModel()
                        {
                            pname = HireProset.Name,
                            price = HireProset.Price,
                            pId = HireProset.Id,
                        };
                        HireItemListModel.HireItemSetList.Add(productVarListset);
                    }
                }
            }

            return View(HireItemListModel);

        }

此控制器HireItemModel模型参数值为null。为什么??

[HttpPost,ActionName("HireItem")]
    public ActionResult HireItem(string submitB, FormCollection formCollection, HireItemModel HireItemListModel)
    {
        var graduandList = _graduandService.GetGraduandBynameCeremony(HireItemListModel.ceremony_id, HireItemListModel.first_name, HireItemListModel.middle_name, HireItemListModel.last_name);
        foreach (var graduand in graduandList)
        {
            graduand.height = HireItemListModel.height;
            graduand.head_circumference = HireItemListModel.head_circumferenc;
            _graduandService.Updategraduand(graduand);
        }

这是我的观点。

@model HireItemModel
    @using (Html.BeginForm())
     { 

         <table  >

     <tr>
        <td >
          Ceremony : 
        </td>
        <td>
           Ceremony at @Model.ceremony_date

        </td>
    </tr>

      <tr>
                <td >
                  Name :
                </td>
                <td >
                   @Model.first_name  @Model.middle_name  @Model.last_name
                </td>
            </tr>
            </table>
         <div id="HItemType_1">
         @Html.CheckBox("HItemType")
       @*<input type="checkbox" name="test" value="test" id="HItemType"  />*@
         <label> Academic Dress Set</label>

         </div>
     <div id="HsetItem">


                @Html.Partial("_LoadHireSetItem", @Model.HireItemSetList)
      </div> 


          <div  id="HseparateItem">
                @Html.Partial("_LoadHireSeparateItem", @Model.HireItemSeparatetlist)
           </div>


         <table  >
         <tr>
         <td colspan="2">
         Please tell us your measurement:
         </td>
         </tr>
     <tr>
        <td >
        Height (in cm):
        </td>
        <td>
         @Html.EditorFor(model => model.height)


        </td>
    </tr>

      <tr>
                <td >
                 Head circumference (in cm):
                </td>
                <td >
                 @Html.EditorFor(model => model.head_circumferenc)

                </td>
            </tr>
            </table>

         <div>
        <input class="productlistaddtocartbutton" type="submit"  value="Add to cart" name="submitB"  id="btnaddtocart"/>
         </div>

     }

感谢。

1 个答案:

答案 0 :(得分:0)

确保在视图中您有要在POST操作中使用的所有值的输入字段。例如,如果您想使用ceremony_idfirst_namemiddle_namelast_name属性,则需要包含它们:

@Html.HiddenFor(model => model.ceremony_id)
@Html.HiddenFor(model => model.first_name)
@Html.HiddenFor(model => model.middle_name)
@Html.HiddenFor(model => model.last_name)

如果用户不应修改其值,您可以使用隐藏字段,但您也可以根据需要使用文本字段。