如何在控制器中发送和检索

时间:2010-04-02 12:07:14

标签: asp.net-mvc

我在视图中有以下代码,但是,我可以看到我没有控制器中的值。怎么了?  在我看来,

<%
    using (Html.BeginForm())
    {%>
       <%=Html.TextBox("Addresses[0].Line1") %>
       <%=Html.TextBox("Addresses[0].Line2")%>
       <%=Html.TextBox("Addresses[1].Line1")%>
       <%=Html.TextBox("Addresses[1].Line2")%>

        <input type="submit" name="submitForm" value="Save products" />
        <%
    }
%>

我的课程如下:

public class Customer
{
    public string FirstName { get; set; }
    public string Lastname { get; set; }
    public List<Address> Addresses { get; set; }
    public Customer()
    {
        Addresses = new List<Address>();
    }
}

public class Address
{
    public int Line1 { get; set; }
    public int Line2 { get; set; }
}

我的控制器如下:

public ActionResult Index()
    {
        return View();
    }

    [HttpPost]
    public ActionResult Index(Customer customer)
    {
        return View();
    }

2 个答案:

答案 0 :(得分:0)

ActionResult的参数名为customer,因此默认情况下默认模型绑定器将在表单中查找该名称。我相信如果您将代码修改为以下内容,则应该选择它:

   <%=Html.TextBox("customer.Addresses[0].Line1") %>
   <%=Html.TextBox("customer.Addresses[0].Line2")%>
   <%=Html.TextBox("customer.Addresses[1].Line1")%>
   <%=Html.TextBox("customer.Addresses[1].Line2")%>

答案 1 :(得分:0)

检查以确保您的View绑定到Customer模型。

此外,在查看包含表单的网页时,请查看视图生成的源,以查看字段是否正确命名。

最后,如果以上都没有帮助,请更改Index操作中的参数,如下所示:

public ActionResult Index(FormCollection form)

然后您可以使用调试器检查传入的FormCollection对象,以查看View向您发送的确切内容。