将部分视图加载到视图中的正确方法

时间:2011-08-19 02:18:26

标签: asp.net-mvc-3

我想创建一个允许我为一个人添加电话号码的视图。

public class PersonModel
{
    public string Name { get; set; }
}

public class PhoneModel
{
    public string PhoneNumber { get; set; }
}

public class PersonDetailViewModel
{
    public PersonModel PersonDetails { get; set; }
    public IList<PhoneModel> PhoneNumbers { get; set; }
}

我将主视图绑定到viewmodel,如

@model DynamicPhoneNumber.Models.PersonDetailViewModel
@{
ViewBag.Title = "Add";
}
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
@using (Html.BeginForm())
{
 @Html.ValidationSummary(true)
<fieldset>
    <legend>Details</legend>Name @Html.TextBoxFor(a => a.PersonDetails.Name)
    <input type="button" id="btnAdd" value="Press Me" />
    <div id="mydiv">
    </div>
    <p>
        <input type="submit" value="Create" />
    </p>
</fieldset>
}

我的部分视图看起来像

@model DynamicPhoneNumber.Models.PhoneModel
<p>
@Html.TextBoxFor(t => t.PhoneNumber)
</p>

我使用jquery动态添加局部视图。

在HttpPost上我放置了一个断点,我可以看到PersonDetails.Name中的值,但是我加载的partialview中的值都没有被绑定到PhoneModel。

如果能够将部分视图中的数据返回到我的viewmodel,我需要做什么?

1 个答案:

答案 0 :(得分:0)

这是一篇很好的博客文章,可能有助于解决您的问题

http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx