MVC表单发布模型列表

时间:2018-02-16 16:20:48

标签: asp.net-mvc forms list post model

我有一个发送到视图的模型。此模型具有用于填充列表框的List元素。在这个视图中,我发布了一个控制器动作,传递我的模型作为参数。在回发时,我可以看到原始类型,但是,似乎无法访问列表。这是我的代码:

型号:

int mark = (int) (Math.random() * 10);

查看:

<?xml version="1.0" encoding="UTF-8"?><metadata xmlns="http://musicbrainz.org/ns/mmd-2.0#" xmlns:ext="http://musicbrainz.org/ns/ext#-2.0" created="2018-02-16T02:07:28.816Z">
<recording-list count="72" offset="0">
  <recording ext:score="100" id="6e702972-00c2-4725-b3e5-60e85ef0de25">
    <title>T.N.T</title>
    <artist-credit>
      <name-credit>
        <artist id="66c662b6-6e2f-4930-8610-912e24c63ed1">
          <name>AC/DC</name>
        </artist>
      </name-credit>
    </artist-credit>
    <release-list>
      <release id="ddaa5690-df97-4bb2-b93d-396fe5fb49d5">
        <title>Live USA</title>
        <release-group id="6b1ace64-bf92-3c42-8a1f-aea6fa08edec" type="Live">
          <primary-type>Album</primary-type>
          <secondary-type-list>
            <secondary-type>Live</secondary-type>
          </secondary-type-list>
        </release-group>
        <date>1990</date>
        <country>DE</country>
        <release-event-list>
          <release-event>
            <date>1990</date>
            <area id="85752fda-13c4-31a3-bee5-0e5cb1f51dad">
              <name>Germany</name>
              <sort-name>Germany</sort-name>
              <iso-3166-1-code-list>
                <iso-3166-1-code>DE</iso-3166-1-code>
              </iso-3166-1-code-list>
            </area>
          </release-event>
        </release-event-list>
        <medium-list>
          <track-count>21</track-count>
          <medium>
            <position>2</position>
            <format>CD</format>
            <track-list count="11" offset="1">
              <track id="caadf3b8-4a44-34c6-b9dc-c9870c5d9bc0">
                <number>2</number>
              </track>
            </track-list>
          </medium>
        </medium-list>
      </release>
    </release-list>
  </recording>
</recording-list>
</metadata>

控制器:

public class ReportInfoViewModel
    {
        public int report_id { get; set; } = 0;
        public string report_name { get; set; } = "";
        public string report_path { get; set; } = "";
        public string plaza_param { get; set; } = "y";

        public List<FacilityViewModel> facilitieslist { get; set; } = new List<FacilityViewModel>();
}
public class FacilityViewModel
    {
        public string facility_id { get; set; }
        public string facility_name { get; set; }
    }

我要做的是回发,将模型发送回控制器。除列表类型外,将发回所有基本类型。如何在帖子上发回列表模型?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

我能够在视图中创建一个隐藏字段,序列化列表并将其存储在隐藏字段中。

@using (Html.BeginForm("ViewReport", "Reports", Model, FormMethod.Post, new { target = "_blank" }))
{
    string facilitiesListJson = Newtonsoft.Json.JsonConvert.SerializeObject(@Model.facilitieslist);
    @Html.Hidden("FacilitiesList", facilitiesListJson);

//other form objects
}

在我的控制器操作中,我反序列化了隐藏字段(Request.Form)并访问列表。

string _jsonString = Request.Form["FacilitiesList"];
                List<FacilityViewModel> _objList = JsonConvert.DeserializeObject<List<FacilityViewModel>>(_jsonString);