我是MVC的新手,喜歡它,但遇到了問題。我有與代碼視圖這樣的:ASP.NET MVC3 Ajax:InsertionMode.Replace按預期工作
@model MyModel
@Ajax.ActionLink("Add", "Create", "User", null,
new AjaxOptions {
UpdateTargetId = "mydiv",
InsertionMode = InsertionMode.Replace,
HttpMethod = "GET"
},
new {
@class = "add"
})
<div>
@Html.Partial("UserTable", Model.RegisteredUsers)
</div>
<div id="mydiv" />
這可能是非常明顯的,但頁面顯示用戶清單(以下簡稱「用戶表」局部視圖),幷包括一個鏈接,管理員點擊創建一個新用戶。創建用戶表單是一個局部視圖,就像在UserTable上的彈出窗口一樣。下面是返回創建用戶表單控制器動作:
public string Create()
{
Models.User user = new Models.User();
PartialViewResult vr;
ViewContext vc;
StringWriter sw = new StringWriter();
vr = PartialView("../../Views/User/UserForm", user);
vr.ExecuteResult(this.ControllerContext);
vc = new ViewContext(this.ControllerContext, vr.View, vr.ViewData, new TempDataDictionary(), sw);
vr.View.Render(vc sw);
return "<div style=\"position:absolute; top:200px; left:175px\">" + sw.ToString() + "</div>";
}
的原因,我返回一個字符串,而不是一個ActionResult(或類似的東西)是添加創建「彈出式」效應的包裝股利。除了在「彈出窗口」中顯示之外,創建用戶窗體還顯示在UserTable的下方,其中「mydiv」是。對頁面源代碼的檢查顯示「mydiv」沒有被替換,而是創建用戶表單的代碼被放置在新的彈出窗格中的div 和中,而且我沒有運氣計算爲什麼。
我想我引用正確的jQuery庫:
<script src="@Url.Contetn("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
<script src="@Url.Contetn("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
誰能告訴我爲什麼我得到這個行爲,以及如何解決它?還是有更好的方法來達到您可以推薦的相同效果?
TIA!
傑夫
編輯:
哦,忘了提:我不能只把在創建用戶窗體本身的「彈出」分區的原因是它在其他地方使用該系統,而那種行爲在那裏是不可取的。我沒有自己創建該表單,只是在我的場景中重用了另一個開發人員的代碼。