c# - एएसपी.नेट एमवीसी हां / कोई बैंड बटन मजबूत बाउंड मॉडल एमवीसी के साथ





asp.net-mvc model radio-button boolean (8)


नियमित HTML का उपयोग करके रेडियो बटन के चारों ओर लेबल टैग जोड़ना 'labelfor' समस्या को भी ठीक करेगा:

<label><%= Html.RadioButton("blah", !Model.blah) %> Yes</label>
<label><%= Html.RadioButton("blah", Model.blah) %> No</label>

पाठ पर क्लिक करने से अब उपयुक्त रेडियो बटन का चयन होता है।

क्या किसी को पता है कि एएसपी.नेट एमवीसी में एक मजबूत टाइप किए गए मॉडल की बुलियन संपत्ति के लिए हाँ / नहीं रेडियो बटन कैसे बांधना है।

आदर्श

public class MyClass
{
     public bool Blah { get; set; }
}

राय

<%@  Page Title="blah"  Inherits="MyClass"%>
    <dd>
        <%= Html.RadioButton("blah", Model.blah) %> Yes
        <%= Html.RadioButton("blah", Model.blah) %> No
    </dd>

धन्यवाद

उपाय:

दिशा के लिए ब्रायन के लिए धन्यवाद लेकिन यह उन्होंने जो लिखा था उसके विपरीत था। जैसा कि -

<%@  Page Title="blah"  Inherits="MyClass"%>
<dd>
    <%= Html.RadioButton("blah", !Model.blah) %> Yes
    <%= Html.RadioButton("blah", Model.blah) %> No
</dd>



दूसरा पैरामीटर चुना गया है, तो इसका उपयोग करें! बुलियन झूठा होने पर कोई मूल्य नहीं चुनने के लिए।

<%= Html.RadioButton("blah", !Model.blah) %> Yes 
<%= Html.RadioButton("blah", Model.blah) %> No 



बेन के जवाब से थोड़ा सा निर्माण, मैंने आईडी के लिए विशेषताओं को जोड़ा ताकि मैं लेबल का उपयोग कर सकूं।

<%: Html.Label("isBlahYes", "Yes")%><%= Html.RadioButtonFor(model => model.blah, true, new { @id = "isBlahYes" })%>
<%: Html.Label("isBlahNo", "No")%><%= Html.RadioButtonFor(model => model.blah, false, new { @id = "isBlahNo" })%>

आशा है कि ये आपकी मदद करेगा।




यदि आप एमवीसी 3 और रेजर का उपयोग कर रहे हैं तो आप निम्न का भी उपयोग कर सकते हैं:

@Html.RadioButtonFor(model => model.blah, true) Yes
@Html.RadioButtonFor(model => model.blah, false) No



अगर मैं अंगूठी में अपनी टोपी फेंक सकता हूं, तो मुझे लगता है कि रेडियो बटन कार्यक्षमता का पुन: उपयोग करने के मौजूदा उत्तरों की तुलना में एक क्लीनर तरीका है।

मान लें कि आपके पास अपने व्यूमोडेल में निम्न संपत्ति है:

Public Class ViewModel
    <Display(Name:="Do you like Cats?")>
    Public Property LikesCats As Boolean
End Class

आप पुन: प्रयोज्य संपादक टेम्पलेट के माध्यम से उस संपत्ति का पर्दाफाश कर सकते हैं:

सबसे पहले, फ़ाइल Views/Shared/EditorTemplates/YesNoRadio.vbhtml

फिर YesNoRadio.vbhtml पर निम्न कोड जोड़ें:

@ModelType Boolean?

<fieldset>
    <legend>
        @Html.LabelFor(Function(model) model)
    </legend>

    <label>
        @Html.RadioButtonFor(Function(model) model, True) Yes
    </label>
    <label>
        @Html.RadioButtonFor(Function(model) model, False) No
    </label>
</fieldset>

आप अपने दृश्य में टेम्पलेट नाम मैन्युअल रूप से निर्दिष्ट करके संपत्ति के लिए संपादक को कॉल कर सकते हैं:

@Html.EditorFor(Function(model) model.LikesCats, "YesNoRadio")

पेशेवरों:

  • पीछे कोड में तार जोड़ने के बजाय HTML संपादक में HTML लिखना प्राप्त करें।
  • DisplayName डेटा एन्नोटेशन को संरक्षित करता है
  • लेबल बटन पर टॉगल करने के लिए लेबल पर क्लिक की अनुमति देता है
  • फॉर्म में बनाए रखने के लिए कम संभव कोड (1 लाइन)। अगर इसे प्रस्तुत करने के तरीके में कुछ गड़बड़ है, तो इसे टेम्पलेट के साथ ले जाएं।



मैंने पैकेजिंग को एक विस्तार विधि में समाप्त कर दिया ताकि (1) मैं एक बार लेबल और रेडियो उत्पन्न कर सकता हूं और (2) इसलिए मुझे अपनी आईडी निर्दिष्ट करने के साथ झगड़ा नहीं करना पड़ा:

public static class HtmlHelperExtensions
{
    public static MvcHtmlString RadioButtonAndLabelFor<TModel, TProperty>(this HtmlHelper<TModel> self, Expression<Func<TModel, TProperty>> expression, bool value, string labelText)
    {
        // Retrieve the qualified model identifier
        string name = ExpressionHelper.GetExpressionText(expression);
        string fullName = self.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(name);

        // Generate the base ID
        TagBuilder tagBuilder = new TagBuilder("input");
        tagBuilder.GenerateId(fullName);
        string idAttr = tagBuilder.Attributes["id"];

        // Create an ID specific to the boolean direction
        idAttr = String.Format("{0}_{1}", idAttr, value);

        // Create the individual HTML elements, using the generated ID
        MvcHtmlString radioButton = self.RadioButtonFor(expression, value, new { id = idAttr });
        MvcHtmlString label = self.Label(idAttr, labelText);

        return new MvcHtmlString(radioButton.ToHtmlString() + label.ToHtmlString());
    }
}

उपयोग:

@Html.RadioButtonAndLabelFor(m => m.IsMarried, true, "Yes, I am married")



या एमवीसी 2.0:

<%= Html.RadioButtonFor(model => model.blah, true) %> Yes
<%= Html.RadioButtonFor(model => model.blah, false) %> No



आप प्रतिबद्ध हैश के साथ सभी असेंबलीइन्फो फ़ाइलों को अद्यतन करने के लिए एक पावरहेल वन-लाइनर का उपयोग कर सकते हैं।

$hash = git describe --long --always;gci **/AssemblyInfo.* -recurse | foreach { $content = (gc $_) -replace "\[assembly: Guid?.*", "$&`n[assembly: AssemblyMetadata(`"commithash`", `"$hash`")]" | sc $_ }






c# asp.net-mvc model radio-button boolean