【发布时间】:2016-05-08 13:26:09
【问题描述】:
我使用this article 中描述的方法来创建下拉菜单。
模型
public class IceCreamFlavor
{
public int Id { get; set; }
public string Name { get; set; }
}
视图模型
public class ViewModel
{
private readonly List<IceCreamFlavor> _flavors;
[Display(Name = "Favorite Flavor")]
public int SelectedFlavorId { get; set; }
public IEnumerable<SelectListItem> FlavorItems
{
get { return new SelectList(_flavors, "Id", "Name");}
}
}
观点
@Html.LabelFor(m=>m.SelectedFlavorId)
@Html.DropDownListFor(m => m.SelectedFlavorId, Model.FlavorItems)
@Html.ValidationMessageFor(m=>m.SelectedFlavorId)
<input type="submit" value="Submit" />
这种方法效果很好。
现在我想在同一个视图上显示模型的属性。例如,假设我们具有以下属性。
public class IceCreamFlavor
{
public int Id { get; set; }
public string Name { get; set; }
public float Price { get; set; }
}
现在我需要在下拉列表下方显示价格
价格:15.99
我怎样才能做到这一点?
【问题讨论】:
-
您将需要 ajax 来调用服务器方法,该方法根据所选选项返回价格并更新 DOM
-
@Stephen Muecke:是的,我知道这个选项。但我想知道是否有更好的选择,因为这是一个非常常见的用户场景。
-
您只是想在提交后显示模型外的值吗?
-
将所有
IceCreamFlavor的集合传递给视图并存储在 javascript 数组中的另一种替代方法,然后根据所选选项查找数组并获取值(节省制作ajax 调用,但意味着您在原始页面加载中加载更多数据) -
最好在提交之前(即在 DropDown Change 事件中)。但是提交按钮是一个选项,因为没有其他简单的方法可以解决这个问题
标签: c# .net asp.net-mvc model-view-controller razor