如何在 MVC3 ASP.NET 中从部分视图发布数据
本文关键字:布数据 视图 数据 MVC3 ASP NET | 更新日期: 2023-09-27 17:55:32
我有一个使用视图模型的视图。在此视图中,我在@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]);
}
使用编辑器模板。
假设您的视图模型是这样的
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/下创建一个名为"编辑器模板"的文件夹,并创建名称为 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" />
}
现在,当您发布表单时,您将在视图模型的参与者集合中获得参与者信息。