ASP.NET HttpPost没有将Dictionary对象传递给Action方法

时间:2013-04-12 06:43:46

标签: c# asp.net-mvc controller http-post

我在Controller代码中的HttPost方法中检索Collection类时遇到问题。 出于某种原因,它能够检索'int',例如,但不能检索字典。

我在ASPX文件中使用隐藏的输入标记。 我确实在ASPX文件和Controller页面中的HTTP帖子之前和之后放了一个Debug.WriteLine,但是Dictionary只填充在ASPX页面中。对于我需要它的代码页,它为0。

...</tr>
                <% i++; %>
                <% list.Add(user.ID.ToString()); %>
                <% list.Add(user.FirstName.ToString()); %>
                <% list.Add(user.LastName.ToString()); %>
                <% list.Add(user.Seniority.ToString()); %>
                <% list.Add(sec_a.ToString()); %>
                <% list.Add(sec_b.ToString()); %>
                <% list.Add(sec_c.ToString()); %>
                <% list.Add(uvid_a.ToString()); %>
                <% details.Add(i, list); %>
             <% } %>
         </tbody>
         </table>
          // it works here but not in the .CS file where the post is made
        <% System.Diagnostics.Debug.WriteLine("Before Post value: " + details.Count); %>
          // here is the hidden field that is supposed to send the variable into the Action method
        <input type="hidden" name="student_details" value="<%= details %>" />
        <div class="buttons">
<button type="submit" class="button">Export Data</button>
        </div>
    </fieldset>
    </form>
</article>

    //Controller file    
    [HttpPost]
    public ActionResult Report(Dictionary<int, List<string>> student_details)
    {
        var grid = new System.Web.UI.WebControls.GridView();
        var datatable = new DataTable();

        datatable.Columns.Add("User ID");
        datatable.Columns.Add("First Name");
        datatable.Columns.Add("Last Name");
        datatable.Columns.Add("xxx");
        datatable.Columns.Add("yyy");
        datatable.Columns.Add("zzz");
        datatable.Columns.Add("Title");
        datatable.Columns.Add("Grade");

        System.Diagnostics.Debug.WriteLine("After Post value: " + student_details.Count);

        foreach (var stud in student_details)
        {
            datatable.Rows.Add(stud.Value);
        }

它传递一个int变量但不传递一个Dictionary。

0 个答案:

没有答案