2012-06-09 65 views
0

重裝父視圖我想實現如下陳述的情景:關閉從使用jQuery子視圖對話框而不在MVC3

我使用MVC 3 Razor視圖。

點擊文本框(稱爲結果文本框),從主頁視圖(這是一個不同的視圖,添加視圖)打開一個對話框,並帶回發到主控制器的動作。

在對話框(即添加視圖)上,只需輸入兩個數字進行添加,並在其提交後,執行添加視圖控制器操作的回傳。

現在,當添加控制器操作處理完成後,我想要添加數字並關閉當前對話框(添加視圖)並更新父視圖(主視圖)上的結果文本框,並添加結果。

注意:關閉對話框後,我不希望父視圖重新加載或刷新。

現在,當我面臨的問題是如何

1)取隱藏字段的值(容器除了值),並設置父頁面上的結果測試盒?

2)從對話框本身關閉對話框(添加視圖)?無需刷新父視圖?

代碼:

<h2> Input numbers to add</h2> 
    @using (Html.BeginForm("About","Home",FormMethod.Post, new {id = "dialogchildform"})) 
    { 

     @Html.Hidden("hdnresult", ViewData["result"], new { id = "hdnres" }) 

    <div style="position: relative; margin-left: 200px; top: 80px"> 

     <fieldset> 


      @Html.ValidationSummary(true) 
      <div class="editor-label"> 
       Value 1 
      </div> 
      <div class="editor-field"> 
       @Html.EditorFor(model => model.num1, new { id = "num1" }) 
       @Html.ValidationMessageFor(model => model.num1) 
      </div> 
      <div class="editor-label"> 
       Value 2 
      </div> 
      <div class="editor-field"> 
       @Html.EditorFor(model => model.num2, new { id = "num2" }) 
       @Html.ValidationMessageFor(model => model.num2) 
      </div> 
     </fieldset> 
     <p> 
      <input type="submit" value="Add and Retrun" id="inputSubmit" /> 
     </p> 
    </div> 

    } 




    <script type="text/javascript"> 

      $(document).ready(function() { 
       $("#inputSubmit").click(function() { 

        document.forms('dialogchildform').submit(); 

      // txtParentResult is a Textbox on prent view to be updated 
        document.getElementById('txtParentResult').value 
= document.forms('dialogchildform').hdnres.value; 
// not updating the parent textbox 


        // $(window.document).dialog('close'); 
//gives error - Microsoft JScript runtime error: Object doesn't support property or method 'dialog' 
        //$("#mydiag").dialog("close"); 
// also gives error 

        //jQuery(".ui-dialog-content").dialog("close"); 
// again gives error - Microsoft JScript runtime error: Object doesn't support property or method 'dialog' 


       });   
      }); 

    </script> 

控制器動作:

[HttpPost] 
     public ActionResult Add(AddNum vAddNum) 
     { 
      objAddNum = vAddNum; 
      int result = objAddNum.AddNumbers(); 
      ViewData["_ActionCloseDialog"] = "true"; 
      ViewData["result"] = result; 
      return View(); 
     } 

回答

1

得到了解決關閉子幀。

而不是在對話框視圖上使用jQuery函數,我在父視圖本身上使用了對話框按鈕。

因爲對話框定義爲父級.cshtml上JavaScript函數的全局varibale,並且在div中封裝了子視圖,所以可以訪問這兩個視圖上的控件。

0

不知道這是你以後有什麼,但在子幀你可以設置一個全局變量,然後設置控件父本中的文本以便提取

parent.document.getElementById("").text() = ""; 

然後y OU可以通過做

var child = document.getElementById('childId'); 
child.document.close() 

希望這有助於

+0

Acheived this .. –