在ASP.Net MVC中将ID转换为名称

时间:2009-11-12 04:48:01

标签: sql

当我在应用程序中呈现“详细信息”视图时,我正在尝试将ID转换为名称。我已成功地使用代码在和“create”视图中显示名称:

在我的控制器中:

ViewData["countyViewData"] = new SelectList(db.Counties, "CountyID", "CountyName");

在我看来:

<%= Html.DropDownList("CountyID", ViewData["countyViewData"] as SelectList)%>

我的问题的核心是我在控制器和详细信息视图中需要显示什么作为CountyName而不是ID?我目前在视图中有这个:

<%= Html.Encode(Model.CountyID) %>

我假设我需要控制器中的一些ViewData代码来告诉视图每个ID使用哪个县名。

提前感谢帮助新程序员!

添加到Clarify:客户的“我的详细信息”视图显示的值是CountyID,我希望它显示存储在另一个表中的CountyName。控制器和视图中需要显示什么以便显示CountyName?

3 个答案:

答案 0 :(得分:1)

创建一个IEnumerable或SelectListItem列表,其中包含要显示的Text属性(县名),要返回的值的value属性(县id)和如果要预先选择该项,则选择true。 / p>

所以可能:

ViewData["counties"] = new SelectList(db.Counties, "CountyID", "CountyName").Select( c => new SelectListItem { Text = c.CountyName, Value = c.CountyId, Selected = false } );

现在你要做的就是:

<%= Html.DropDownList( "Counties") %>

如果我忘了某些东西,它应该是那么简单甚至更简单。我非常确定默认情况下Selected属性为false,因此如果需要,可以删除它。

祝你好运。


Arghh。我忘记了SelectList是什么。我以为这是你的一个。

所以忘记以上所有内容,你需要做的就是在你看来:

<%= Html.DropDownList( "countyViewData") %>

Swanny。

答案 1 :(得分:0)

我对你的问题感到有些困惑,但我让我试着总结一下你说的话......

为表县提供CountyID,如何在实体的详细信息视图中显示名称?

我假设你的实体有一个CountyID,它是Counties表的一个外键。在您的控制器中,或者在您加载实体的任何地方,您需要携带连接的表数据(左/内连接),或者您可以对该ID的县信息进行单独查询(按ID获取县)。

作为一般的实践规则,我知道很多样本都使用ViewData [“”]语法,你应该总是定义一个强类型的视图/模型。这将使您的生活更轻松,并使代码更容易处理。

例如,在详细信息视图中,您可以定义县名称和ID,并在视图中根据需要显示它们。如果是一个体面的例子,请查看A post from Stephen Walther here

public class BensViewModel{
  public string CountyName {get;set;}
  public int  CountyId {get;set;}
}

如果这没有帮助,请尝试向我们澄清您的问题......

答案 2 :(得分:0)

我找到了 - 感谢所有帮助我走到终点的人!这是最终为我工作的代码:

在我的模型中:

public County GetCounty(int id)
    {
        return db.Counties.SingleOrDefault(d => d.CountyID == id);
    }

在我的Comtroller中:

int countyID = customer.CountyID;
County county = customerRepository.GetCounty(countyID);
ViewData["CountyName"] = county.CountyName;

在我的观点中:

<%= Html.Encode(ViewData["CountyName"]) %>

我可能会得到一个更快的解决方案,但我知道我不是最好的正确提问:)