2015-04-04 208 views
1

我在这里再这么早。 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处使用,但没有得到射击..有人点我在正确的方向。在此先感谢

回答

1

我只是发回一个空的模型部分:

public PartialViewResult Projectindex(Project collection, int ProjId) 
{ 
    //Save collection to DB.    
    var model = new Project(); 
    ModelState.Clear(); 
    return PartialView("_Project", model); 
} 

新增ModelState.Clear(),我觉得这实在是所有需要。

强制html助手使用您更改的模型。否则,他们使用表格中的值提交

+0

谢谢你试过,但它没有工作......我观察到的是,它工作时,我重定向到另一个局部视图,但没有,当我做相同的局部视图.. ...... – 2015-04-04 21:57:53

+0

@olufikayoolowoyo更新注册。 'ModelState.Clear();' – Mackan 2015-04-04 22:00:27

+0

谢谢Mackan,我发现我的错误在哪里。我忘了在部分视图中包含Insertion.mode ..现在它们运行良好。 – 2015-04-06 18:05:29