首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC UpdateModel ComplexType

MVC UpdateModel ComplexType
EN

Stack Overflow用户
提问于 2009-03-13 14:23:47
回答 1查看 2.3K关注 0票数 4

如果您有以下类型。

代码语言:javascript
复制
public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public List<TheParameters> Parameters { get; set; }
    public Address Address { get; set; }
}
public class Address
{
    public string Street { get; set; }
    public string City { get; set; }
    public string State { get; set; }
}
public class TheParameters
{
    public string Parameter { get; set; }
}

你让你的页面强输入给Person。

代码语言:javascript
复制
"System.Web.Mvc.ViewPage<Person>"

<form action="/Home/Save" method="post">  

    <b>Your Name</b> 
    <label for="FirstName">  
        <span>First Name</span>  
        <%=Html.TextBox("Person.FirstName", ViewData.Model.FirstName) %>  
    </label>  

    <label for="LastName">  
        <span>Last Name</span>  
        <%=Html.TextBox("Person.LastName", ViewData.Model.LastName)%>  
    </label>  

    <b>Your Address</b>  

    <label for="Street">  
        <span>Street</span>  
        <%=Html.TextBox("Person.Address.Street", ViewData.Model.Address.Street)%>  
    </label>  

    <label for="City">  
        <span>City</span>  
        <%=Html.TextBox("Person.Address.City", ViewData.Model.Address.City)%>  
    </label>  

    <label for="State">  
        <span>State</span>  
        <%=Html.TextBox("Person.Address.State", ViewData.Model.Address.State)%>  
    </label>  

    <label for="Parameters">
        <span>Parameters</span>
        <%
            int index = 0;
            foreach (TheParameters parameter in ViewData.Model.Parameters)
            {
                Response.Write(Html.TextBox("Person.Parameters.Parameter[" + index + "]", parameter.Parameter));
                index++;
            }
         %>
    </label>

    <input id="submit" type="submit" value="submit" />  

</form> 

在控制器中设置以下内容:

代码语言:javascript
复制
    public ActionResult Index()
    {
        Person p = new Person();
        p.FirstName = "Name";
        p.LastName = "Last";
        p.Address = new Address();
        p.Address.City = "city";
        p.Address.State = "state";
        p.Address.Street = "street";

        p.Parameters = new List<TheParameters>();
        p.Parameters.Add(new TheParameters(){ Parameter = "P1" });
        p.Parameters.Add(new TheParameters(){ Parameter = "p2" });

        ViewData.Model = p;

        return View();
    }

    public ActionResult Save(FormCollection form)   
    {
        Person p = new Person();


        UpdateModel(p, "Person", form.ToValueProvider());

        return RedirectToAction("Index");

    }

我给UpdateModel打电话。除了Person.Parameters之外,所有属性都已正确填写。在updateModel之后始终为null。

有没有解决这个问题的办法或变通办法?

致敬,史蒂夫

EN

回答 1

Stack Overflow用户

发布于 2012-02-08 20:39:21

在您的视图中:

代码语言:javascript
复制
"Person.Parameters.Parameter[" + index + "]" 

应该是

代码语言:javascript
复制
"Person.Parameters[" + index + "].Parameter"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/642939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档