如何在MVC中填充基于下拉选择的文本框
本文关键字:选择 于下拉 文本 填充 MVC | 更新日期: 2023-09-27 18:15:57
嗨,我已经创建了一个表,并通过ADO连接到MVC项目。网络实体。连接后,我为实体添加了控制器,它在MVC项目的VIEW文件夹中创建了一组cshtml文件。但现在我需要的是创建一个下拉列表和文本框。我在cshtml文件中创建了下拉列表,并在CONTROLLER中为其编写了逻辑。我也可以创建文本框,但我面临的问题是基于下拉列表选择填充文本框。
我的模型自动生成VS 2012是
public partial class Plan_S
{
public int PlanId_PK { get; set; }
public string PlanNames { get; set; }
public string Hours { get; set; }
}
显示下拉列表的控制器是'
public class dropdownController : Controller
{
private PivotEntities db = new PivotEntities();
//
// GET: /dropdown/
public ActionResult Index()
{
ViewBag.plannames = new SelectList(db.Plan_S, "PlanId_PK", "PlanNames");
return View();
}
protected override void Dispose(bool disposing)
{
db.Dispose();
base.Dispose(disposing);
}
public ActionResult ddl()
{
return View(new Plan_S());
}
}`
我的看法。显示下拉列表的CSHTML是
@model Pivot.Models.Plan_S
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<div>
@Html.DropDownList("PlanNames", "--select--")
</div>
Now当我在下拉列表中选择一个项目时,它应该自动填充表中相应的值。在我的代码中,Plan_S表被自动生成为Plan_S MODEL类。但是在数据库中,我已经为这些列设置了一组值。
eg..) PlanId_PK | PlanNames | Hours
1 Plan1 1hrs
2 Plan2 2hrs
3 Plan3 3hrs
在Plan_S表中,
PlanNames列在下拉列表中填充,当我在DDL中选择Plan1时,它应该以1hrs
填充文本框。当我在DDL中选择Plan2时,它应该以2hrs填充文本框。
这是我需要的逻辑,我可以在asp webforms中做到这一点,但它在MVC中是棘手的。
我认为它需要Jquery .......
请帮帮我,我花了几个小时才找到这个逻辑....
首先,让我们创建一个视图模型来保存这些东西:
public class PlanViewModel
{
public List<SelectListItem> Plans { get; set; }
}
然后,在控制器动作中,让我们构建Model:
public ActionResult Index()
{
var model = new PlanViewModel();
model.Plans = db.Plan_S
.Select(p => new SelectListItem
{
Value = p.Hours,
Text = p.PlanNames
})
.ToList();
return View(model);
}
然后在View中执行:
@model Pivot.Models.Plan_S
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<div>
@Html.DropDownList("PlanNames", Model.Plans, "--select--")
<input id="planHours" type="text" />
</div>
然后你需要在jQuery中执行以下操作:
<script type="text/javascript">
$(function () {
$("[name='PlanNames']").change(function () {
$("#planHours").val($(this).val());
});
});
</script>