2011-08-19 42 views
0

我想創建一些過濾器和數據表的視圖,將過濾。 問題在於過濾器,因爲它們是動態創建的。使用JSON發送和接收模型[MVC] [C#]

public class TestController : Controller 
{ 

    public ActionResult Test() 
    { 
     DisplayModel model = new DisplayModel(); 
     model.Filters = new List<TestFilter>() { new TestFilter() { Name = "Name 1" }, new TestFilter() { Name = "Name 2" }, new TestFilter() { Name = "Name 3" } }; 
     return View(model); 
    } 
    public ActionResult JsonChange(List<TestFilter> filters) 
    { 
     if (filters == null || filters.Count == 0) return PartialView("_Selected", null); 
     SelectedModel model = new SelectedModel(); 
     model.SelectedValues = ""; 
     foreach (var el in filters) 
     { 
      model.SelectedValues += (el.Name + " " + el.Value + "<br />"); 
     } 

     return PartialView("_Selected", model); 
    } 

} 

這裏是我的主視圖

@model TestReport.Models.DisplayModel 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
<script type="text/javascript"> 
$(function() { 
    $(".submit").click(function() { 
     $.ajax({ 
      url: '/Test/JsonChange/', 
      data: '<what should be here>', 
      success: function (data) { 
       $("#content").html(data); 
      } 
     }); 
    }); 
}); 
</script> 
@foreach (var el in Model.Filters) 
{ 
<div> 
    <span>@el.Name</span><span>@Html.TextBoxFor(t => el.Value, null)</span> 
</div> 
} 
<div class="submit" style="border:1px solid black;width:100px;"> 
Send</div> 

,這裏是我的,將通過Ajax調用來改變局部視圖:

@model TestReport.Models.SelectedModel 
You have selected: 
<br /> 
@if (Model != null && !String.IsNullOrEmpty(Model.SelectedValues)) 
{ 
    <text>@Model.SelectedValues</text> 
} 

終於有我型號

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 

namespace TestReport.Models 
{ 
    public class SelectedModel 
    { 
     public string SelectedValues { get; set; } 
    } 
} 

和Filter類

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 

namespace TestReport.Entities 
{ 
    public class TestFilter 
    { 
     public string Name { get; set; } 
     public string Value { get; set; } 
    } 
} 

我試圖簡化整體解決方案爲您呈現我的問題。 我想完成的是發送到控制器方法動態創建的輸入框的所有值與ajax作爲對象(列表)。 我知道其中一種方法是使用$ .ajax({})方法。但也許這不是最好的解決方案?

回答