我在這裏再這麼早。 sad 我在mvc4中實現了基於標籤的局部視圖。我有3個選項卡,它顯示3個單獨的部分視圖,使用Ajax.ActionLink進行更改。每個部分視圖都是需要發佈到同一控制器內的不同操作的表單。動作鏈接工作正常{部分視圖顯示和更改}。我已經使用Ajax.BeginForm提交單個表單以防止完整回發。在表單提交的動作被調用和執行,但我的挑戰,我需要顯示當前的形式,但形式被清除,目前d形式內容retains-即重定向到同一Partialview 下面是我的代碼帶MVC的Ajax.ActionLink和Ajax.BeginForm局部視圖
ProjectIndex行動項目Controller.cs
[HttpPost]
public PartialViewResult Projectindex(Project collection, int ProjId)
{
//Save collection to DB.
return PartialView("_Project");
}
_Project.cshtml ..局部視圖
@model MyProject.Models.Project
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
@using (Ajax.BeginForm("Projectindex", new { ProjId = "3" }, new AjaxOptions
{
HttpMethod = "POST",
OnBegin = "myonbegin",
OnSuccess = "myonsuccess",
OnComplete = "myoncomplete",
OnFailure = "myonfailure",
LoadingElementId = "loader" // div with .gif loader - that is shown when data are loading
}))
{ @Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<fieldset>
<legend>Project</legend>
<div class="editor-label">
@Html.EditorFor(model => model.ProjName)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
Project.cshtml主視圖
@Ajax.ActionLink(
"Project", //Link Text
"ProjectIndex", //Public Method inside our Controller
new AjaxOptions
{
HttpMethod = "GET", //Do a HTTP Post
InsertionMode = InsertionMode.Replace, //Replace content
UpdateTargetId = "TabBody", //Target element ID
}
)
<div id="TabBody">
@Html.Partial("_Project")
</div>
唯一的挑戰是,形式犯規得到清除給我的印象是認爲不渲染。我嘗試添加一個的onSuccess和onFailure處使用,但沒有得到射擊..有人點我在正確的方向。在此先感謝
謝謝你試過,但它沒有工作......我觀察到的是,它工作時,我重定向到另一個局部視圖,但沒有,當我做相同的局部視圖.. ...... – 2015-04-04 21:57:53
@olufikayoolowoyo更新註冊。 'ModelState.Clear();' – Mackan 2015-04-04 22:00:27
謝謝Mackan,我發現我的錯誤在哪裏。我忘了在部分視圖中包含Insertion.mode ..現在它們運行良好。 – 2015-04-06 18:05:29