2014-03-30 46 views
0

這裏MVC數據是問題IM相互衝突: 我有一個表格,其中用戶數據插入,與數據一起有關於地理位置(地址,城市等)的信息。 與這個地理信息,當用戶點擊下一步(使用actionlink)我打開一個對話框(這是一個paritalview)和顯示谷歌地圖插入位置插入用戶批准。之後,當用戶點擊「批准」按鈕時,我想繼續轉到其他操作。通過ActionLink的和/或形成

在點即時通訊使用ActionLink的,我失去了表格的所有數據。 如果我將操作鏈接更改爲按鈕提交,部分視圖根本不打開。

問:什麼是正確的,爲什麼做這樣的事(這樣的數據流& UI)?

這裏是附加了一些代碼: View.cshtml

@using (Html.BeginForm()) 
    {   
     @Html.EditorFor(x => x.UserInfo) 
    @Html.ActionLink("next", "GoogleApprove", "Create", null, new { id = "next", name = 
    "button", value = "next" }) 
     @*<input type="submit" name="button" id="next" value="next"  
     /<*@ 
     <div id="dialog"></div> 
     } 

     $(function() { 
     $('#next').click(function() { 
      var href = this.href; 
      $('#dialog').dialog({ 
       modal: true, 
       height: 720, 
       width: 700, 
       title 'Verify Location', 
       open: function (event, ui) { 
        $(this).load(href, function (result) { 
         $('#googleFrom').submit(function() { 
          $.ajax({ 
           url: this.action, 
           type: this.method, 
           data: $(this).serialize(),   
           success: function (json) { 
            $('#dialog').dialog('close'); 
           } 
          }); 
          return false; 
         }); 
        }); 
       } 
      }); 
      return false; 
     }); 
     }); 

回答

1

你可以使用一個提交按鈕:

@using (Html.BeginForm("GoogleApprove", "Create", FormMethod.Post, new { id = "myForm" })) 
{   
    @Html.EditorFor(x => x.UserInfo) 
    <input type="submit" name="button" id="next" value="next" /> 
    <div id="dialog"></div> 
} 

,然後在一個單獨的JavaScript文件訂閱的這個.submit事件形成並打開對話框:

$(document).on('submit', '#googleFrom', function() { 
    $.ajax({ 
     url: this.action, 
     type: this.method, 
     data: $(this).serialize(),   
     success: function (json) { 
      $('#dialog').dialog('close'); 
     } 
    }); 
    return false; 
}); 

$(function() { 
    $('#dialog').dialog({ 
     autoOpen: false, 
     modal: true, 
     height: 720, 
     width: 700, 
     title 'Verify Location', 
     open: function (event, ui) { 
      var form = $('#myForm'); 
      $.ajax({ 
       url: form.attr('actoin'), 
       type: form.attr('method'), 
       data: form.serialize(), 
       context: this, 
       success: function(result) { 
        $(this).html(result); 
       } 
      }); 
     } 
    }); 

    $('#myForm').submit(function() { 
     $('#dialog').dialog('open'); 
     return false; 
    }); 
});