我正在尝试研究如何在不重新加载页面的情况下将项目添加到我的 MVC 页面模型中包含的列表中。
我有一个如下图所示的表格。该页面运行一个“申请人”模型,该模型具有“联系人”列表。
当做一个“应用程序”时,用户需要能够添加多个“联系人”。单击“加号”时,会在列表中添加一个新的“联系人”项。
http://i.stack.imgur.com/DUvb7.png
我尝试了多种方式(Actionlinks 等),但每种方式似乎都重定向了页面。
如果有人可以帮助阐明这一点,将不胜感激
这是我的模型的简化示例
public class ApplicantMessage : PersonMessage
{
//... Other properties here
public virtual ICollection<ContactMessage> Contacts { get; set; }
}
这是定义“联系人”详细信息的 div 区域(注意,我不知道是否或如何在此处使用 @Html.TextBoxFor(..))
<!-- Other Contacts -->
<div class="row">
<div class="span2">
<label class="label">Other Contacts</label>
</div>
<div class="span4">
<input type="text" class="new-contact-details"/>
</div>
</div>
<div class="row">
<div class="span2"></div>
<div class="span4">
@Html.DropDownList("contactMethodDropdown", default(ContactMethod).ValueList(), new{@class="dropdown-slim"})
<input type="text" class="new-contact-contact-details"/>
<a rel="tooltip" href="#" data-original-title="Add a contact" class="icon-plus"></a>
</div>
</div>
这是我的控制器
public class ApplicationController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult NewApplication()
{
var message = new ApplicantMessage();
return View(message);
}
[HttpPost]
public ActionResult NewApplication(ApplicantMessage message)
{
if (ModelState.IsValid)
{
//add to DB
}
return View(message);
}
}
此外,值得注意的是,联系人需要显示在页面的右侧。我假设这将使用某种局部视图来完成?