![](/img/trans.png)
[英]Rendering a view with HtmlHelper and Partial Page in 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.