2012-12-14 29 views
1

我有一个编辑细节表单,它在jQuery UI对话框中显示为部分对象。我想提交修改回数据库,但我遇到麻烦使用MVC3编辑表单上使用的标准提交按钮..我想提交更改,但留在对话框中。将模型对象从UI对话框的部分对象传回控制器

我已经把页面上的按钮调用了一点jquery(下)。我需要知道的是我如何序列化我的模型(称为Models.User)并将其传递回控制器。

正如你所看到的,我拥有大部分的jquery - 我需要做的就是序列化和数据并发送它。我猜我需要使用JSON,但林不100%如何使在

知道的任何帮助..

<script type="text/javascript"> 
    $(document).ready(function(e) { 
     $(function() { 
      $("#quickButton1").live("click", function (e) { 
       e.preventDefault(); 
       $.ajax({ 
        url: "/Users/QuickEditSave/", 
        data: ({}),     
        success: function (data) { 
         uiDialog.close(); 
        }, 
        error: function(xhr, ajaxOptions, thrownError) { 
         alert(xhr.responseText); 
        } 
       }); 
      }); 
     }); 
    });  
</script> 
+0

请张贴完整代码视图。 –

回答

0

解决:

var formData = $("form").serialize(); 

data: formData, 
type: "POST", 

然后在我控制器期望和对象:

public string QuickEditSave(newUser newuser) 
+0

如果这是解决方案,则应将其标记为如此。 http://stackoverflow.com/help/accepted-answer – Killnine

1

您必须将表单输入元素序列化为JSON对象,然后通过发送它。

使用这个插件连载找你表单数据(这部分是由SO question):

$.fn.serializeObject = function() 
{ 
    var o = {}; 
    var a = this.serializeArray(); 
    $.each(a, function() { 
     if (o[this.name] !== undefined) { 
      if (!o[this.name].push) { 
       o[this.name] = [o[this.name]]; 
      } 
      o[this.name].push(this.value || ''); 
     } else { 
      o[this.name] = this.value || ''; 
     } 
    }); 
    return o; 
}; 

$(function() { 
    $('form').submit(function() { 
     $('#result').text(JSON.stringify($('form').serializeObject())); 
     return false; 
    }); 
});​ 

,然后用发送:

$.ajax({ 
     url: "/Users/QuickEditSave/", 
     data: JSON.stringify($('form').serializeObject()),     
     success: function (data) { 
      uiDialog.close(); 
     }, 
     error: function(xhr, ajaxOptions, thrownError) { 
      alert(xhr.responseText); 
     } 
    }); 
相关问题