我想在视图的文本框中显示所选项目的价格。例如,从DLL中选择的产品的价格为10欧元,它应该显示在视图中。有人可以帮忙吗?
的Controler
public ActionResult Edit(int id)
{
Product product = DB.Products.Find(id);
ViewBag.Formats = new SelectList(storeDB.Format, "FormatID", "FormatName", "Price");
ViewBag.Foo = "Some Value"; //test
return View(product);
}
查看
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<fieldset>
<div class="editor-field">
@Html.DropDownList("Formats", ViewBag.Formats as SelectList, new { id = "DDLFormatsID" })
@Html.Display("Price") //displays nothing
@Html.Display("Foo") //working properly
</div>
</fieldset>
}
更新
答案 0 :(得分:1)
问题似乎是SelectList
的构造函数中的参数顺序。我更改了这一行,它按预期工作,显示了价格。
ViewBag.Formats = new SelectList(storeDB.Format, "FormatID", "Price");
您可以检查构造函数中每个参数的用法。第一个是数据,第二个是保存要在帖子上发送的数据的属性名称,第三个是要显示的属性的名称。
回答更新的问题:
如果要根据下拉列表中的值显示某些值,则可以使用javascript进行操作。首先您需要识别控件以放置您的值,我将使用跨度但您可以使用文本框等。然后您订阅下拉列表的更改事件并每次更改第一个控件的内容。
请注意,我使用select的值来存储价格。如果您希望将值作为项目的ID接收,则无法使用此方法。您需要将价格存储在其他地方,您可以使用隐藏元素。
您必须在视图中引用jQuery库。
代码是这样的:
public ActionResult Edit(int id)
{
Product product = DB.Products.Find(id);
ViewBag.Formats = new SelectList(storeDB.Format, "Price", "FormatName");
return View(product);
}
查看强>
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<fieldset>
<div class="editor-field">
@Html.DropDownList("Formats", ViewBag.Formats as SelectList, new { id = "DDLFormatsID" })
<span id="priceHolder"></span>
</div>
</fieldset>
}
<script src="~/Scripts/jquery-1.9.1.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#Formats").change(function () {
var $this = $(this);
var selectedValue = $this.val();
$('#priceHolder').html(selectedValue);
});
});
</script>