当我在应用程序中呈现“详细信息”视图时,我正在尝试将ID转换为名称。我已成功地使用代码在
在我的控制器中:
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?
答案 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"]) %>
我可能会得到一个更快的解决方案,但我知道我不是最好的正确提问:)