MVC HttpPost接收空参数

时间:2014-04-02 09:52:43

标签: c# jquery asp.net-mvc http-post asp.net-mvc-partialview

应用程序HomeController.cs中的控制器文件定义了两个控件SetPowerOff和[HttppPost] SetPowerOff。

public ActionResult SetPowerOff(int ID, string deepness)
    {
     .............
        if (Request.IsAjaxRequest())
        {
            var viewModel = new HomeSetPowerOffViewModel()
            {
                //List of devices
                Devicelist = list,
                age = 18

            };
            return PartialView("_SetPowerOff", viewModel);
        }
        else
        {
            return HttpNotFound();
        }
    }

[HttpPost]
public ActionResult SetPowerOff(HomeSetPowerOffViewModel homeSetPowerOffViewModel)
{
}

“部分视图”返回列表中的设备。

@using (Html.BeginForm("SetPowerOff", "Home", FormMethod.Post, new { @class = "form-horizontal" }))
{
    <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">X</button>
        <h3 id="myModalLabel">Devices information</h3>
    </div>
    <div class="modal-body ">
        <div class="row-fluid">
            <div class="span12">
                <ul>
                @foreach (var devices in Model.Devicelist)
                { <li>
                    @devices.Name;
                  </li>
                }
              </ul>
            </div>
        </div>
    </div>
    <div class="modal-footer">
        @Html.ActionLink("Cancel", "Index", "Home", new { @class = "btn btn-danger" })
        <button type="submit" class="btn btn-success">
            Ok
        </button>
    </div> 
}

按下部分视图上的“确定”按钮后,它将转到HttpPost请求。这里收到的homeSetPowerOffViewModel为null,年龄为0.我非常想知道为什么要重置它们。 谢谢你的时间!

3 个答案:

答案 0 :(得分:3)

您的表单中没有任何输入,因此无需提交

答案 1 :(得分:1)

您的观看次数<form>不包含<input><select><textarea>字段的age表单字段。

因此,当您提交时,它将设置为默认整数值0

假设age的{​​{1}}属性是一种整数(HomeSetPowerOffViewModel

答案 2 :(得分:0)

在帖子上,您会收到hidden或任何其他输入字段(下拉列表,文本框等)。您的表单中没有此类字段。 (你没有以任何方式填写模型)

虽然,您可以使用ajax提交,然后您可以将任何想要的内容发送给您的控制器