2016-10-24 66 views
0

我有以下下拉列表:设置“HiddenFor”价值选择的下拉列表值

@Html.DropDownListFor(m => m.SelectedOrderCodeId, new SelectList(Model.OrderCodesList, "OrderCodeId", "DisplayString")) 

现在OrderCodesList有以下:OrderCodeIdDisplayString & Percentage

如何设置一个HiddenFor值到从该下拉列表中选择的值的Percentage? (根据伪原因,下面的代码必须完整,我不确定接下来要做什么 - 如果它甚至可能的话)。

@Html.HiddenFor(m => m.FinancialSupportPercentage, new { @Value = Model.OrderCodesList.Where 

伪:

OrderCodesList.Select 'Percentage' 
Where 
    'OrderCodeId' 
is the `Selected 'OrderCodeId` from the `DropDownListFor` 
+0

你可以使用jQuery和Ajax。对于下拉菜单中的onchange事件,请获取该id并获取该id的百分比。 –

+0

'DropDownListFor()'方法只会生成带有'value'属性的选项(以及显示文本)。如果你想要一个附加属性的值,你需要使用ajax来调用一个服务器方法并根据选定的值来获取它。但是这会有点棘手 - 您可以在提交表单时使用POST方法。 –

回答

1

下面是一个简单的方法:

public class Order 
{ 
    public int OrderCodeId { get; set; } 
    public string DisplayString { get; set; } 
    public int Percentage { get; set; } 
} 

控制器

public JsonResult GetPercentage(int OrderCodeId) 
{ 
    var data = _dbContext.List 
     .FirstOrDefault(p => p.OrderCodeId == OrderCodeId) 
     .Percentage; 

    return Json(data, JsonRequestBehaviour.AllowGet); 
} 

查看

@Html.DropDownListFor(m => m.SelectedOrderCodeId, new SelectList(Model.OrderCodesList, "OrderCodeId", "DisplayString")) 
@Html.HiddenFor(m => m.FinancialSupportPercentage) 

<scripts> 
    $('#SelectedOrderCodeId').on('change', function() { 
     var selectedIndex = $(this).val(); 

     $.ajax({ 
      url: '/ControllerName/GetPercentage', 
      data: { OrderCodeId: selectedIndex }, 
      method: 'GET', 
      success: function (result) { 
       $('FinancialSupportPercentage').val(result); 
      } 
     }); 
    }); 
</scripts> 
0

听起来像是你可能要在客户端的JavaScript的东西。服务器端代码,我认为你想要的是:

@{ 
    var entity = Model.OrderCodesList.FirstOrDefault(i => i.OrderCodeId == Model.SelectedOrderCodeId); 
    double percentage = 0; 

    if (entity != null { percentage = entity.Percentage } 
} 

@Html.Hidden("FinancialSupportPercentage", percentage) 

我用隐藏,因为它让你直接访问的价值; HiddenFor通常从模型中提取值。

上述方法运行良好,如果你在服务器上做所有事情,如果是这样的话,那么这将工作正常。但是,如果用户更改下拉菜单,您是否希望隐藏更改?如果你这样做,你需要JavaScript。

+0

我收到“双倍百分比”的意外数字 – erbsoftware

+0

'百分比'究竟是什么?对我来说,它是Model.FinancialSupportPercentage – erbsoftware

+0

我的代码中的变量“双倍百分比” –

相关问题