2011-08-19 23 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({})方法。但也许这不是最好的解决方案?

回答