MVC 4:将选定的客人详细信息传递给View to Controller

时间:2014-04-06 10:50:21

标签: asp.net-mvc asp.net-mvc-4

我的观点有客人名单(我得到了整个清单),在他们到达时,我必须将他们标记为已抵达。 我等待30分钟,然后点击提交按钮将所有详细信息提交给服务器。

我将提交,访客ID和到达状态到服务器

我不知道如何将最后一个活动的访客从View传递到服务器。

我的控制器

[HttpPost]
    public ActionResult GuestList(GuestListForModel collection)
    {
        var temp = collection;

        return View();
    }    

MyView的

    @using (Html.BeginForm("GuestList", "Guest"))
     {
     @foreach (var saiList in Model.GuestArrivalInfoList)
                 { 
                    <li class="group">
                        <div class="IB left">
                            <img src="images/user-1.png" alt="" class="stdImg rds50" width="100" height="100" />
                        </div>
                        <div class="left brRgt nameAge">
                            <div class="group">
                                <a href="#">@saiList.FirstName @saiList.LastName</a>
                                <div class="age">@saiList.Age<span class="font9">yrs</span></div>
                            </div>                        
                        </div>                   

               <footer class="group">
                <div class="sheet brRgt left">
                    <span class="font9 dblock">present</span>
                    <div>@Model.Present</div>
                </div>
                <div  class="sheet brRgt left">
                    <span class="font9 dblock">@Model.Absent</span>
                    <div>1</div>
                </div>
                <div  class="sheet brRgt left">
                    <span class="font9 dblock">Model.NoAttendance</span>
                     <div>1</div>
                </div>
                <input type="submit" value="Save" id="Save" />              
            </footer>

型号

public class GuestListForModel 
    {
        public bool Status {get;set;}      // arrived or not arrived.
        public Int GuestID   {get;set;}    


    }
P.S:我无法通过谷歌搜索获得满意的答案。

先谢谢

1 个答案:

答案 0 :(得分:0)

您需要进行两项更改:

更改GuestList操作以接受集合:

[HttpPost]
public ActionResult GuestList(ICollection<GuestListForModel> collection)
{
    var temp = collection;

    //do your processing    

    return View();
}

使用for循环呈现访客列表

@for(var i = 0; i < Model.GuestArrivalInfoList.Count; i++)
{
    @Html.TextBoxFor(m => Model.GuestArrivalInfoList[i].GuestID)
}

Razor / ASP.NET将负责在呈现时在视图模型中设置正确的id(例如GuestID的ID为&#34; GuestArrivalInfoList[1].GuestID&#34;),并且还会在命中动作时处理模型绑定,确保将字段集合映射到集合中。

我认为您的视图模型和GuestListForModel中缺少/其他详细信息可确保您来回传输正确的数据(例如,我不会在视图中看到GuestID)。