0

次のコードを表現する別の方法があるかどうか疑問に思っています。コードは期待どおりに機能しますが、命名規則の定義方法に問題があります。

//Model.cs:
[DisplayName("Device Manufacturer")]
public List<KeyValuePair<int, string>> DeviceManufacturer { get; set; }
public int SelectedManufacturerID { get; set; }

//Model.ascx:
<%= Html.DropDownListFor(model => model.SelectedManufacturerID, new SelectList(Model.DeviceManufacturer, "Key", "Value"))%>

これで、選択したリスト項目が変更されるたびに、新しい値が SelectedManufacturerID に保存されます。次のようにコントローラーで値を受け取ることができます。

int selectedID = model.SelectedDataCenterID;

しかし、 MVC が選択リストに ID フィールドではない ID 'SelectedManufacturerID' を与えるという事実に不満があります。これは選択リストです。明らかに、これは SelectedManufacturerID フィールドへのバインドをサポートするために発生しています。

選択リストのクライアント側で作業したい場合は、次のようなコードがあります。

$('#SelectedManufacturerID').change(function(){
    console.log("OnSelectedIndexChanged!");
});

このjQueryは非常に不明確です。SelectedManufacturerID が選択 DOM 要素であることを示すものはありません。この投稿の冒頭にある MVC 規則を使用して適切な命名規則を作成することは不可能のようです。他の誰かがこのように感じていますか?他に選択肢はありますか?

4

2 に答える 2

2

必要に応じて、ヘルパー メソッドの別のオーバーロードを使用して、ドロップダウンの ID またはその他の html 属性を更新できます。DropDownListForここでは、最後のパラメーターとして html 属性を渡すことができます。

<%= Html.DropDownListFor(model => model.SelectedManufacturerID,
             new SelectList(Model.DeviceManufacturer, "Key", "Value"),
                                          new { @id="ManufacturerList"})%>
于 2012-11-05T23:52:55.643 に答える
1

select#SelectedManufacturerID代わりに使用してください。

于 2012-11-05T23:52:44.910 に答える