MVC HttpPost 接收一个空参数

本文关键字:一个 参数 HttpPost MVC | 更新日期: 2023-09-27 17:56:21

应用程序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 为空,年龄为 0。我非常想知道为什么要重置它们。谢谢你的时间!

MVC HttpPost 接收一个空参数

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

您的视图<form>不包含表单字段,如age字段的<input><select><textarea>

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

假设HomeSetPowerOffViewModel age属性是整数(int

在发布时,您会收到hidden或任何其他输入字段(下拉列表、文本框等)。表单中没有此类字段。 (您没有以任何方式填充模型)

Althought,你可以用ajax提交,你可以将任何你想要的东西发送到你的控制器。