2014-04-02 34 views
0

控制器文件在应用程序HomeController.cs中定义了两个控件SetPowerOff和[HttppPost] SetPowerOff。MVC HttpPost接收空参数

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.我非常想知道为什么要重置它们。 感谢您的时间!

+0

请更新您的视图代码包含数据'age' 。 –

+0

我只需要在部分视图中打印设备的名称。 – Cristian

回答

3

你不要有任何输入表单中的所以没什么提交

+0

那么我怎样才能发送列表文本框或其他东西。问题是我无法在其他任何设备上打印@ devices.Name。 :) – Cristian

+0

@for(var i = 0; i @ Html.DisplayFor(model => Model.Devicelist [i] .Name) @ Html.HiddenFor(model = > Model.Devicelist [i] .Name) } –

+0

将您的foreach代码更新为之前评论中的代码,它将显示设备的名称,并且它将创建一个隐藏字段,其中的设备名称应该是提交回服务器 –

0

在后您收到hidden或其他任何输入字段(下拉列表,文本框等)。你的表单中没有这样的字段。 (你没有填写任何方式模型)

Althought,你可以使用Ajax提交,你可以发送任何你想你的控制器

+0

感谢您的解释! – Cristian

1

您的看法<form>不包含像<input><select><textarea>表单域的age领域。

所以当你提交,它将被设置为默认整数值0

假设HomeSetPowerOffViewModelage属性是一个整数类型(int

+0

谢谢你的解释! – Cristian