2016-10-24 131 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

我的代碼中的變量「雙倍百分比」 –

相關問題