這裏去我的PartialViews答案。解決這個問題的方法還有很多,比如使用簡單的客戶端jquery(不需要訪問服務器動作)。我建議你也去探索這些解決方案。
模型 -
public class Site
{
public List<SubSite> SubSiteNames { get; set; }
}
public class SubSite
{
public string Name { get; set; }
}
控制器 -
public class TableController : Controller
{
public ActionResult Index()
{
Site sn = new Site();
sn.SubSiteNames = new List<SubSite>();
sn.SubSiteNames.Add(new SubSite() { Name = "a.microsoft.com" });
sn.SubSiteNames.Add(new SubSite() { Name = "b.microsoft.com" });
return View(sn);
}
public ActionResult SubSite()
{
return PartialView("_SubSite");
}
}
索引視圖 -
@model MVC.Controllers.Site
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script>
$(function() {
$("#ClickMe").click(function() {
$.ajax({
url: "@Url.Action("SubSite")",
type: "GET",
error: function (response) {
if (!response.Success)
alert("Error");
},
success: function (response) {
$("#content").append(response);
}
});
});
})
</script>
<div id="content">
@foreach (var item in Model.SubSiteNames)
{
@Html.Partial("_SubSite", item);
}
</div>
<input type="button" value="+" id="ClickMe" />
_SubSite管窺 -
@model MVC.Controllers.SubSite
<div>
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.Name)
</dt>
<dd>
@Html.TextBoxFor(model => model.Name)
</dd>
</dl>
</div>
輸出,當我們點擊+符號 -
![enter image description here](https://i.stack.imgur.com/b45MX.png)
我的合作工人採用淘汰賽JS http://knockoutjs.com/像這樣的東西 –