2011-05-05 58 views
4

我有一個2列mvc 3表單。左欄是一個樹形視圖,當選擇一個節點時,id ='partialView'的div被更新以顯示該節點的細節。這似乎是工作正常。 編輯窗體(這是一個局部視圖)被加載到id ='partialView'的div中。mvc 3 Ajax.BeginForm 3部分視圖不工作(發佈到新窗體arrgh)

現在問題發生在用戶提交此部分視圖時...現在它將回發給控制器和正確的方法但是,結果不會返回到id ='partialView'的div,而是發佈到新的頁。

所以這是我想要部分視圖發佈和返回替換現有的部分視圖的場景。

這可能嗎?

我包括我下面的代碼爲我的部分觀點...

@model DataModel.Code 



@using (Ajax.BeginForm("Edit", "Code", new AjaxOptions { 
            UpdateTargetId = "partialView", 
            HttpMethod="POST" 

            } 
            )) {  


    @Html.ValidationSummary(true) 
    <fieldset> 
     <legend>Code</legend> 


     @Html.HiddenFor(model => model.CodeID) 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.Description) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.Description) 
      @Html.ValidationMessageFor(model => model.Description) 
     </div> 

     <div class="editor-field"> 
      @Html.EditorFor(model => model.Note) 
      @Html.ValidationMessageFor(model => model.Note) 
     </div> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.DateModified) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.DateModified) 
      @Html.ValidationMessageFor(model => model.DateModified) 
     </div> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.TopicID) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.TopicID) 
      @Html.ValidationMessageFor(model => model.TopicID) 
     </div> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.Special) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.Special) 
      @Html.ValidationMessageFor(model => model.Special) 
     </div> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.Html) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.Html) 
      @Html.ValidationMessageFor(model => model.Html) 
     </div> 

     <p> 
      <input type="submit" value="Save" /> 

     </p> 



    </fieldset> 
} 



<div> 
    @Html.ActionLink("Back to List", "Index") 
</div> 


@Html.Telerik().ScriptRegistrar().jQuery(true) 

<script type="text/javascript"> 

    $(document).ready(function() { 



    }); 


</script> 
+0

請問您提交返回一個局部的動作視圖還是全視圖?編輯:我只注意到你不在你的局部視圖中包含jQuery腳本。嘗試添加它們。 – AnteSim 2011-05-05 01:53:56

+0

我正在返回一個PartialView,但它返回到一個新頁面(不是div partialView)。 我已經添加腳本到頁面,它沒有區別。實際上,腳本也在主頁面中。 – David 2011-05-05 12:41:02

+0

你解決了嗎?怎麼樣? – polonskyg 2011-11-16 16:24:01

回答

20

包括

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script> 

在_Layout.cshtml

+0

我在這個完全相同的問題上花了一半的工作時間,因爲我的部分視圖沒有調用擁有此行的主文件。謝謝。 – dasper 2013-07-08 22:58:10

+0

哈,很好。我從別人那裏繼承了一些代碼 - 我看到它包含了unobtrusive-ajax.js,我沒有質疑它......事實證明它確實如此,只有那些被包含的代碼被註釋掉了。該死的! – neminem 2013-08-09 15:10:18