【发布时间】:2020-07-27 21:08:09
【问题描述】:
我有一个模型和一个带有选择和几个文本框的视图。我正在尝试通过以下方式将文本框值绑定到选定的列表项:
型号:
public class Items
{
public string ID { get; set; }
public string Name { get; set; }
public SelectList ItemList { get; set; }
public List<SelectListData> MiscList { get; set; }
}
public class SelectListData{
public string ID { get; set; }
public string Name { get; set; }
public string Address{get; set;}
public string City{get; set;}
public string State{get; set;}
}
Controller:
控制器:
public async public async Task<IActionResult> Index()
{
Items viewModel = new Items();
List<SelectListData> tempLIst = new List<SelectListData>();
tempLIst.Add(new SelectListData() { ID = "1", Name = "ID-1", Address="123 AVE", City = "New City", State = "CA"});
tempLIst.Add(new SelectListData() { ID = "2", Name = "ID-2", Address="234 AVE", City = "New City", State = "CA"});
tempLIst.Add(new SelectListData() { ID = "3", Name = "ID-3", Address="345 AVE", City = "New City", State = "CA"});
tempLIst.Add(new SelectListData() { ID = "4", Name = "ID-4", Address="456 AVE", City = "New City", State = "CA"});
viewModel.ItemList = new SelectList(tempLIst, "ID", "Name", 2);
viewModel.SelectListData = tempLIst;
return View(viewModel);
}
View:
@Model Items
<div class="form-group">
<label class="col-lg-2 control-label">Account</label>
<div class="col-lg-10">
<div class="input-group col-lg-10">
<span class="input-group-addon">
<i class="fa fa-globe" aria-hidden="true"></i>
</span>
<select asp-for="ID" asp-items="@Model.ItemList" class="form-control" onchange="OnSelectedIndexChanged_01(this)"></select>
</div>
@{
if(Model.ID != null) {
var selectedAddress = Model.MiscList.SingleOrDefault(c => c.ID == Model.ID).Address;
}
}
<div>
<input id="selAddress" value="@selectedAddress" /> =====? how do I set the value to selectedAddress here?
</div>
</div>
</div>
<script>
function OnSelectedIndexChanged_01(value, jsdata) {
var selectedID = value.options[value.selectedIndex].value;
var selectedText = value.options[value.selectedIndex].text;
var myArray = [];
var jsdata = @Json.Serialize(@Model.MiscList.ToList()); ===? this is being assigned correctly
//myArray = JSON.parse(jsdata); ===> this line throws "Unexpected token o in JSON at position 1"; commenting this worked out
//myArray = jsdata;
console.log("[" + selectedID + "] [" + jsdata + "] [" + myArray + "]"); ===> this line is printing [[object, object], [object, object], [object, object]]
//console.log("[" + selectedID + "] [" + jsdata + "]");
for (var i = 0; i < myArray.length; i++) {
if (myArray[i].ID == selectedID) {
var Address = document.getElementById("selAddress");
Address.value = "";
Address.value = myArray[i].Address.toString();
break;
}
}
}
</script>
我正在尝试将下拉列表的 selectedValue 绑定到选定的地址。任何帮助表示赞赏。
编辑: 正如稻草人所指出的,我能够绑定初始值。 另一个问题:我的 javascript 似乎没有根据下拉列表的 OnChange 事件填充地址文本。我不确定我是否正确传递了模型的数组列表。任何指针都是有帮助的。
谢谢 NH
【问题讨论】:
标签: javascript razor