@{
ViewBag.Title = "Edit";
Layout = "~/Views/Shared/_Layout.cshtml";
List<branchInformation> branches = ViewData["branch"] as List<branchInformation>;
}
<div class="col" style="width:100%">
<div class="form-group">
Branch:
@Html.DropDownListFor(model => model.brh_shp_to,
from i in branches
select new SelectListItem
{
Text = i.brhNm,
Value = i.brhAddr.ToUpper().Replace(@"\N", "\n")
}
,
new { @class = "form-control", style = "width:100%", @id = "brh" })
</div>
</div>
<div class="col">
<div class="form-group">
Ship To Address
<br />
@Html.TextAreaFor(model => model.brh_shp_to_addr, new { @class = "form-control", @style = "width:100%; max-height:130px; height:130px", @id = "shpAddr" })
@Html.ValidationMessageFor(model => model.brh_shp_to_addr, "", new { @class = "text-danger" })
</div>
</div>
<script type="text/javascript">
$('#brh').change(function () {
var brhName = $('#brh option:selected').val();
$('#shpAddr').val(@branches.Where(i=>i.brhNm == brhName).FirstOrDefault().brhAddr).val());
});
</script>
型号
public class OrderModels
{
public OrderModels()
{
this.Items = new HashSet<Item>();
}
public int OrderID { get; set; }
public string brh_shp_to { get; set; }
public string brh_shp_addr { get; set; }
}
首先,下拉菜单显示“分支名称”,其值为分支地址。我打算做的是将下拉菜单中的文本另存为 brh_shp_to ,其值将保存到 brh_shp_addr ,但是在我发送ajax调用后,模型将使用值并将其保存为 brh_shp_to ,而不是我想要的文本。
因此,我将代码更改为将文本和值设置为brhNm,并通过比较选择的下拉列表的值与 ViewData [“ branch” ] ,现在是分支列表。
我想在下拉列表中更改选项后,将 shpAddr 文本区域中的值更改为分支机构的地址值。
所有代码都包裹在
@using (Ajax.BeginForm("AjaxEditOrder", "Orders",
new AjaxOptions
{
OnSuccess = "OnSuccess",
OnFailure = "OnFailure",
LoadingElementId = "progress"
}))
{
}
我收到错误消息,说未定义brhName。
答案 0 :(得分:0)
您在JavaScript上是否缺少引号?
更改:
$('#shpAddr').val(@branches.Where(i=>i.brhNm == brhName).FirstOrDefault().brhAddr).val());
收件人
$('#shpAddr').val('@branches.Where(i=>i.brhNm == brhName).FirstOrDefault().brhAddr').val()); //not sure what brhAddr holds. you might also have th remove the last .val() on this line.
答案 1 :(得分:0)
正如斯蒂芬·穆克(Stephen Muecke)在评论中提到的那样,我的模型太复杂了,所以我创建了一个小模型,只在其中传递了我需要的部分属性。
public class BranchInfo
{
public string brhNm { get; set; }
public string brhAddr { get; set; }
}
<script type="text/javascript">
$('#brh').change(function () {
var brhName = $('#brh option:selected').val();
var data = JSON.parse('@Html.Raw(Json.Encode(branches))');
for (var i = 0; i < data.length; i++) {
if (data[i].brhNm == brhName)
{
$('#shpAddr').val(data[i].brhAddr);
}
}
</script>
这很完美。