コメントに対する返事がありませんので詳細不明ですが、とりあえず回答を書いておきます。
@HtmlEnumDropDownListFor(m => m.hogehoge new {@class = "xxx"})
@HtmlEnumDropDownListFor(m => m.fugafuga new {@class = "xxx"})
文法的に間違ってます。これではコンパイルも通らないはず。
そこは単なる転記ミスで、html ソースには 2 つの select / option 要素が生成されていて、select 要素にはそれぞれ hogehoge, fugafuga という名前の id が付与されていて、hogehoge の方の option 要素の一つには value="1" があると善意に解釈しても、
$(#hogehoge).change(function()){
がまた間違ってます。$("#hogehoge").change(function()){ でないとダメなはず。
if文の中はalertで通っていることを確認しています。
とのことですがどうやるとそれが確認できるのか不思議です。
上記の間違いを直してもダメだとすると、id は正しいのか、jQuery.js はスクリプトの前に読み込まれているか、select / option 要素はスクリプトの前に読み込まれているかなどが怪しいと思います。
これならできるという例を書いておきます。
Controller と Model
using System.Linq;
using System.Web.Mvc;
using System.ComponentModel.DataAnnotations;
namespace Mvc5App3.Controllers
{
public class DropDownController : Controller
{
public ActionResult Enum()
{
return View();
}
}
public enum CategoryEnum
{
[Display(Name = ".NET")]
DotNet,
[Display(Name = "クラウド")]
Cloud,
[Display(Name = "リファレンス")]
Reference
}
public enum SupplierEnum
{
[Display(Name = "New Orleans Cajun Delights")]
NewOrlieans,
[Display(Name = "Grandma Kelly's Homestead")]
Granma,
[Display(Name = "Tokyo Traders")]
Tokyo
}
public class Article
{
[Display(Name ="カテゴリー")]
public CategoryEnum Category { get; set; }
[Display(Name = "サプライヤー")]
public SupplierEnum Supplier { get; set; }
}
}
View
Visual Studio 2019 のテンプレートを使って作ったプロジェクトのレイアウトを使っているのが条件。
@model Mvc5App3.Controllers.Article
@{
ViewBag.Title = "Enum";
}
<h2>Enum</h2>
@Html.EnumDropDownListFor(model => model.Category, null, htmlAttributes: new { @class = "form-control" })
<br />
@Html.EnumDropDownListFor(model => model.Supplier, null, htmlAttributes: new { @class = "form-control" })
@section Scripts {
<script>
$("#Category").on("change", function () {
var value = $("#Category").val();
if(value == 1){
$("#Supplier").prop("disabled" , true);
}else{
$("#Supplier").prop("disabled" , false);
}
});
</script>
}
html ソース
上の View の @Html.EnumDropDownListFor から生成される select / option 要素
<select class="form-control" data-val="true"
data-val-required="カテゴリー フィールドが必要です。"
id="Category" name="Category">
<option selected="selected" value="0">.NET</option>
<option value="1">クラウド</option>
<option value="2">リファレンス</option>
</select>
<br />
<select class="form-control" data-val="true"
data-val-required="サプライヤー フィールドが必要です。"
id="Supplier" name="Supplier">
<option selected="selected" value="0">New Orleans Cajun Delights</option>
<option value="1">Grandma Kelly's Homestead</option>
<option value="2">Tokyo Traders</option>
</select>
結果