加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – ASP.NET MVC – 从查询字符串中获取对象列表

发布时间:2020-12-16 00:00:00 所属栏目:asp.Net 来源:网络整理
导读:我传递了参数列表.如“名称”,“Id”,“类型”. url中会有很多这样的内容,如下所示: "Name=blah1,Id=231,Type=blah1;Name=blah2,Id=2221,Type=blah1;Name=blah3,Id=45411,Type=blah3;" 我想知道是否有办法将这些查询参数映射到对象列表.所以,我可以创建一个
我传递了参数列表.如“名称”,“Id”,“类型”. url中会有很多这样的内容,如下所示:
"Name=blah1,Id=231,Type=blah1;Name=blah2,Id=2221,Type=blah1;Name=blah3,Id=45411,Type=blah3;"

我想知道是否有办法将这些查询参数映射到对象列表.所以,我可以创建一个对象:

MyTestObject {Name; Id; Type},可以在我的控制器中说出来

Index(IList<MyTestObject> params)

params将填入查询字符串中的数据.

与http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx类似的东西

解决方法

是的ASP.NET MVC可以自动将集合绑定到操作参数,但是您需要将params作为from值传递,而且它看起来像是在查询字符串中传递的许多参数.看看这一个 http://weblogs.asp.net/nmarun/archive/2010/03/13/asp-net-mvc-2-model-binding-for-a-collection.aspx

基本上你需要做的是:

1)创建包含你的参数的calss

public class MyParam 
{
 publc int Id {get; set;}
 public string Name {get; set;}

 //do all the rest
}

2)创建您将传递给视图的模型

public class MyViewModel
{
  IList<MyParam> MyParams {get; set;}
}

3)在[HttpGet]操作中创建您的集合并将其传递给您的视图:

[HttpGet]
public virtual ActionResult Index()
{
   MyViewModel model = new MyViewModel();
   model.MyParams = CreateMyParamsCollection();

   return View(model);
}

4)在视图中迭代您的集合

@model MyViewModel

@{int index = 0;}

@foreach (MyParam detail in Model.MyParams)
{
  @Html.TextBox("MyParams[" + index.ToString() + "].Id",detail.Id)
  @Html.TextBox("MyParams[" + index.ToString() + "].Name",detail.Name)

  index++;
}

5)在您的[HttpPost]行动中,您可以在收集中捕获您的参数

[HttpPost]
public virtual ActionResult Index(MyViewModel model)
or
[HttpPost]
public virtual ActionResult Index(IList<MyParam> model)

P.S

此外,如果你想在控制器中获得所有的形式参数,你可以这么简单:

[HttpPost]    
public virtual ActionResult Index(FormCollection form)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读