强类型的viewdata

时间:2008-11-28 11:12:54

标签: c# asp.net-mvc

我使用类似

的属性创建了一个强类型LocationViewData
public Location location { get; set; }

Location本身就是模型,其中包含AddressCountry等属性。

在控制器中我有:

public ActionResult Edit(int id)
{
    LocationViewData ld = new LocationViewData();
    ...
    return View(ld);
}

在视图代码中我有:

public partial class Edit : ViewPage<MvcTest.Models.LocationViewData>
{
}

我的问题是:如何让我LocationViewData模型的属性显示在相应的文本框中,例如:

<%=Html.TextBox("address") %>

我不想以其全名指定每个字段:

<%=Html.TextBox("address", ViewData.Model.location.address) %>

1 个答案:

答案 0 :(得分:1)

它已经完全像那样。启动一个新的MVC(beta 1)项目,并将其置于“Home”控制器的“Index”操作中:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        this.ViewData.Model = new MyObject
        {
            Name = "Timmy",
            FavColor = "Blue",
        };

        return View();
    }

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

        public string FavColor { get; set; }
    }
}

现在,把它放在视图中:

<%=Html.TextBox("FavColor") %>

它会说“蓝色”。它试图通过名称绑定(MVC检查一些地方,其中一个是“模型”)。

编辑:你需要做的是:

  1. 确保“location”是一个属性,而“address”是一个属性。

  2. 将“location.address”作为名称......而不仅仅是“地址”。