簡體   English   中英

如何在ASP.NET MVC3中從部分視圖發布數據?

[英]How to post data from partial view in ASP.NET MVC3?

我有一個使用viewmodel的視圖。 在此視圖中,我在@using (Html.BeginForm())塊代碼內使用局部視圖,如下所示

 @foreach (var party in Model.Participants)
                {
                    Html.RenderPartial("BlankEditorRow", party);
                }

局部視圖有一些文本框字段,用戶可以在這些字段中輸入數據。 現在,提交按鈕不在局部視圖中,而是在主視圖中。

在我的視圖中,當我單擊提交按鈕時,我在視圖模型中得到了空值

[HttpPost]
    public ActionResult ActionName(ViewModel model)
    {

    }

我不確定如何從局部視圖中獲取帖子數據。 誰能幫我了解如何從局部視圖發布數據? 例子會很有幫助

編輯:部分視圖如下:

@model ASPNETMVCApplication.Models.Administration.Account.PartyModel

@using HtmlHelpers.BeginCollectionItem

<tr class="editorRow">        
    @using (Html.BeginCollectionItem("party"))
    {

        <td>@Html.TextBoxFor(m => m.FirstName, new { @style = "width: 100px;" })
        </td>
        <td>@Html.TextBoxFor(m => m.LastName, new { @style = "width: 100px;" })
        </td>
        <td>
            @Html.DropDownListFor(model => model.PartyPersonalDetail.Gender, new SelectList(Model.Gender, "Id", "Name"), new { @style = "width: 100px;" })
        </td>
        <td>@Html.TextBoxFor(m => m.PartyPersonalDetail.MobilePhone, new { @style = "width: 100px;" })
        </td>
        <td>
            @Html.DropDownListFor(model => model.PartyPersonalDetail.GothraId, new SelectList(Model.Gothras, "Id", "GothraName"), "--Don't Know--", new { @style = "width: 122px;" })
        </td>
        <td>
            @Html.DropDownListFor(model => model.PartyPersonalDetail.NakshtraId, new SelectList(Model.Nakshtras, "Id", "NakshtraName"), "--Don't Know--", new { @style = "width: 122px;" })
        </td>
        <td>@Html.TextBoxFor(m => m.PartyPersonalDetail.EMail1, new { @style = "width: 135px;" })
        </td>
        <td>
            <a href="#" class="deleteRow">Delete</a>
        </td>

    }
</tr>

為了在MVC中發布集合,必須對它們進行索引 ,因此需要for循環來代替foreach

嘗試這個:

@for(int i = 0; i < Model.Participants.Count; i++)
{
    Html.RenderPartial("BlankEditorRow", Model.Participants[i]);
}

使用編輯器模板

假設您的Viewmodel是這樣的

public EventViewModel
{
  public int ID { set;get;}
  public string EventName { set;get;}
  public List<Participant> Participants {set;get;}
  public EventViewModel()
  {
    Participants=new List<Participant>();
  }
}

public class Participant
{
  public string FirstName { set;get;}
  public string LastName { set;get;}
}

在〜/ Views / yourControllerNameFolder /下創建一個名為“ EditorTemplates ”的文件夾,並創建一個名為Participant.cshtml的視圖(編輯器模板)。

現在為您的編輯器模板添加代碼

@model Participant
<p>
  @Html.TextBoxFor(x=>x.FirstName)
</p>
<p>
  @Html.TextBoxFor(x=>x.LastName)
</p>

現在,在主視圖中,使用Html.EditorFor HTML幫助器方法來調用此編輯器模板。

@model EventViewModel

@using (Html.BeginForm())
{
    <p>Event Name</p>
    @Html.TextBoxFor(x => x.EventName) 
    @Html.EditorFor(x=>x.Participants)
    <input type="submit" value="Save" />
}

現在,當您發布表單時,您將在視圖模型的“參與者”集合中獲得“參與者”信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM