2014-04-17 116 views
1

现在我有一个值被传递并返回到文本框。我想添加多个文本框,并将所有值从控制器传递到ajax函数,以便在页面加载时显示在文本框中。如何将多个值传递给ajax?

Controller: 

    public string GetFormData() 
    { 
     //using Linq query and EF 
     Form form = db.Forms.Find(1); 
     if (form == null) 
     { 
      return ""; 
     } 
     else 

      return form.username; 

    } 

AJAX:

$("#btnSaveForm").click(function (event) { 
     event.preventDefault(); 

     $('#Result2').html("<img src='/Images/loading.gif' />"); 


     $.post($("#frmform").attr("action"), $("#frmform").serialize(), function (result) { 
      if (result != null) { 
       $('#Result2').html(result); 
      } 
     }); 
    }); 
+0

您的代码仍然可以工作。你需要在控制器中捕获它们。 –

+0

是的,它的工作,但我想知道如何为不同的值如果您要发送自定义字段作为邮政阿贾克斯你可以尝试这样传递给阿贾克斯不同的文本框中领域 – Mike

+0

:'$。员额($(“# ()“,”'field1':$(“#field1”)。val(),'field2':$(“#field1”)。val()},function(result){ ...' –

回答

1

你只需要返回JSON结果。考虑一个简单的例子:

型号

public class JSONTestModel 
{ 
    public string Name { get; set; } 
    public bool IsMarried { get; set; } 
    public int Age { get; set; } 
} 

控制器

public ActionResult TestJSON() 
    { 
     var model = new JSONTestModel() 
     { 
      Name = "John Smith", 
      IsMarried = true, 
      Age = 35 
     }; 

     return View(model); 
    } 

    [HttpPost] 
    public ActionResult TestJSON(JSONTestModel model) 
    { 
     // YOUR CODE HERE 

     return Json(model); 
    } 

请注意,POST方法返回JSON结果。这会将您传递给Json的对象序列化。

查看

@using (Html.BeginForm()) 
{ 
    @Html.EditorForModel() 

    <input id="save-data" type="button" value="Save" /> 
} 

<script type="text/javascript"> 
    $(function() { 
     $('#save-data').click(function() { 
      $.post($("form").attr("action"), $("form").serialize(), function (result) { 
       if (result != null) { 
        alert('Name - ' + result.Name); 
        alert('IsMarried - ' + result.IsMarried); 
        alert('Age - ' + result.Age); 
       } 
      }); 
     }); 
    }); 
</script> 

result参数是你的控制器返回JSON对象。

希望它有帮助!如果你把内`

'标记的新文本框