如何在post函数中获取所选记录的值

时间:2012-08-16 12:00:05

标签: asp.net-mvc-3 checkbox

我有一张记录表,显示用户完成的活动

我还有一个与每条记录相关联的复选框,用户可以通过该复选框一次选择多个活动

我想要那些用户选中复选框的记录的ID

我可以显示多条记录,但无法在我的控制器的帖子功能中获取值

这是我的代码

  public ActionResult DisplayList()
    {
     //do activities to fetch record from database
 return View(modelList);//modelList is a viewmodel's Icollection list
    }

视图: -

       @using (Html.BeginForm())
 {
      @Html.ValidationSummary(false)
      <div style=" width:900px; height:400px;">
<div class="textcontent"><b>List of activities</b></div>

<div class="table" style="vertical-align:middle;">
    <div class="row">
        <div class="cell" style="width:auto;">SrNo</div>
        <div class="cell" style="width:auto;">Select Activity</div>
        <div class="cell" style="width:auto;">Learner Name</div>
    </div>
    @foreach (var item in Model.Select((x, i) => new { Data = x, Index = i + 1 }))
    {

    <div class="row1">

        <div class="cell" style="width:auto;">@item.Index</div>
        <div class="cell" style="width:auto;"> <input type="checkbox" name="chkexi" id="selected" onclick="checked()"/></div>
        <div class="cell" style="width:auto;">@Html.DisplayFor(modelItem => item.Data.persn.FirstName)</div>

    </div>    
    }
</div>
     <div class="table">
    <div class="row1">
        <div class="cell">
            <center>
               <button type="submit">Submit</button>//on click of this my controller function is called 
            </center>
        </div>
    </div>
  </div>

 <script>
    function checked() {
if (document.getElementById('selected').checked) {
    document.getElementById('chkstatus') = true;
}
 </script>

     }

我的视图模型:::

  public class PublishViewModule
{
    public virtual myclass obj { get; set; }
           public virtual bool chkstatus { get; set; }
}
     [HttpPost]
    public ActionResult DisplayList(ExhibitionViewModel model,FormCollection form)
    {
        //here i get model as null
        return View();
    }

有人可以帮助我吗

2 个答案:

答案 0 :(得分:0)

在回发操作中,替换

[HttpPost]
public ActionResult DisplayList(ExhibitionViewModel model,FormCollection form)

满足您的需求:

[HttpPost]
public ActionResult DisplayList(ExhibitionViewModel model)

[HttpPost]
public ActionResult DisplayList(FormCollection form)

或根据您要查找的内容进行一些自定义绑定。但这两个是最明显的回发行动。

这背后的理论是:ASP.NET MVC – Think Before You Bind

修改

注意事项:

  1. 你的观点在顶部没有任何模型,所以不确定它是否甚至假设将其发回,也许这就是为什么它是null?

  2. 尝试查看此内容:您的视图模型类名为PublishViewModule,但您在控制器中的回发操作中接受ExhibitionViewModele。这是问题吗?

  3. 希望这有帮助

答案 1 :(得分:0)

我得到了答案.... :)

我再次发布了这个问题,我试图通过ajax传递这些值  这是答案

how to accept value passed through ajax

:)