代码之家  ›  专栏  ›  技术社区  ›  Ben

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

sql
  •  0
  • Ben  · 技术社区  · 15 年前

    在应用程序中呈现“细节”视图时,我正在尝试将ID转换为名称。我已成功地使用以下代码在“编辑”和“创建”视图中显示名称:

    在我的控制器中:

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

    在我看来:

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

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

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

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

    提前感谢您帮助新的程序员!

    添加以澄清:我的客户详细信息视图显示的值是countyID,我希望它显示存储在另一个表中的countyName。控制器和视图中需要什么来显示CountyName?

    3 回复  |  直到 15 年前
        1
  •  1
  •   Swanny    15 年前

    创建一个IEnumerable或SelectListItem列表,其中包含要显示的文本属性(县名)、要返回的值的值属性(县ID),如果要预选该项,则选择“真”。

    因此可能:

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

    现在你所要做的就是:

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

    如果我忘了什么,那应该是那么简单,甚至更简单。我很确定所选属性在默认情况下是假的,所以如果需要,可以删除它。

    祝你好运。


    阿赫。我忘了selectlist是什么。我以为是你的。

    因此,忘记以上所有的一切,你所需要做的就是在你看来:

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

    沼泽。

        2
  •  0
  •   Greg Roberts    15 年前

    我对你的问题有点困惑,但我想总结一下你在说什么……

    为表县提供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;}
    }
    

    如果这不起作用,请尽量为我们澄清一下你的问题…

        3
  •  0
  •   Ben    15 年前

    我找到了-感谢所有帮助我到达终点线的人!以下是最终对我起作用的代码:

    在我的模型中:

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

    在我的指挥官中:

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

    在我看来:

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

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