15

ASP.NET MVCアプリケーションには、2つのラジオボタンがあります。モデルのブール値に応じて、ラジオボタンを有効または無効にするにはどうすればよいですか?(ラジオボタンの値もモデルの一部です)

私のラジオボタンは現在このようになっています-

            @Html.RadioButtonFor(m => m.WantIt, "false")  
            @Html.RadioButtonFor(m => m.WantIt, "true")  

モデルには、というプロパティがありますmodel.Aliveラジオボタンを有効にしたい場合、そうでない場合は、model.Aliveラジオボタンを無効にします。ありがとう!truemodel.Alivefalse

4

3 に答える 3

41

次のように、値をhtmlAttributesとして直接渡すことができます。

@Html.RadioButtonFor(m => m.WantIt, "false", new {disabled = "disabled"})  
@Html.RadioButtonFor(m => m.WantIt, "true", new {disabled = "disabled"})

model.Aliveを確認する必要がある場合は、次のようにすることができます。

@{
   var htmlAttributes = new Dictionary<string, object>();
   if (Model.Alive)
   {
      htmlAttributes.Add("disabled", "disabled");
   }
}

Test 1 @Html.RadioButton("Name", "value", false, htmlAttributes)
Test 2 @Html.RadioButton("Name", "value2", false, htmlAttributes)

お役に立てば幸い

于 2013-02-11T16:16:38.257 に答える
6

私の答えはアーメドの答えと同じでしょう。唯一の問題は、HTML属性が無効になっているために無視されるため、WantItプロパティが送信時に送信されないことです。解決策は、次のようにRadioButtonForsの上にHiddenForを追加することです。

@Html.HiddenFor(m => m.WantIt)
@Html.RadioButtonFor(m => m.WantIt, "false", new {disabled = "disabled"})  
@Html.RadioButtonFor(m => m.WantIt, "true", new {disabled = "disabled"})

このようにして、すべての値がレンダリングされ、送信時にブール値が返されます。

于 2017-05-03T12:56:13.767 に答える
0

または、RadioButtonForにオーバーロードを提供しますか?

public static MvcHtmlString RadioButtonFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, object value, bool isDisabled, object htmlAttributes)
    {
        var linkAttributes = System.Web.Mvc.HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes);
        Dictionary<string, object> htmlAttributesDictionary = new Dictionary<string, object>();
        foreach (var a in linkAttributes)
        {
            if (a.Key.ToLower() != "disabled")
            {
                htmlAttributesDictionary.Add(a.Key, a.Value);
            }

        }

        if (isDisabled)
        {
            htmlAttributesDictionary.Add("disabled", "disabled");
        }

        return InputExtensions.RadioButtonFor<TModel, TProperty>(htmlHelper, expression, value, htmlAttributesDictionary);
    }
于 2015-04-30T16:28:54.963 に答える