it-swarm.com.de

einstellung der Optionsschaltfläche im Bearbeitungsmodus in der MVC-Rasiereransicht

Ich bin neu in MVC-Rasierer. Ich versuche die Webseite zu bearbeiten. In dem ich zwei Optionsfelder habe. Ich kann Daten für Optionsfeldwerte speichern. Wenn ich versuche, diesen Wert zu bearbeiten, kann ich nicht das Optionsfeld auswählen, für das Daten gespeichert werden. Ich habe eine Aufzählung für Gender

public enum Gender
{
    Male,
    Female
}

Mein Erstellungscode lautet: -

<div class="editor-label">
   @Html.LabelFor(model => model.gender)
</div>
<div class="editor-field">
   @Html.RadioButtonFor(x => x.gender, (int)Gender.Male) Male
   @Html.RadioButtonFor(x => x.gender, (int)Gender.Female) Female
</div>

Code bearbeiten ist wie 

<div class="editor-label">
   @Html.LabelFor(model => model.gender)
</div>
<div>
   @if (Model.gender == (int)Gender.Male)
   {
   @Html.RadioButtonFor(model => model.gender, "Male", new { @checked = true })
   @Html.Label("Male")
   @Html.RadioButtonFor(model => model.gender, "Female")
   @Html.Label("Female")
   }
   else
   {
   @Html.RadioButtonFor(model => model.gender, "Male")
   @Html.Label("Male")
   @Html.RadioButtonFor(model => model.gender, "Female", new { @checked = true })
   @Html.Label("Female")
   }
</div>
14
sushama

Du hast gerne geschrieben

@Html.RadioButtonFor(model => model.gender, "Male", new { @checked = true }) and
@Html.RadioButtonFor(model => model.gender, "Female", new { @checked = true })

Hier haben Sie gender als Enum-Typ angenommen und den Wert für das Optionsfeld als string-Typ angegeben - ändern Sie "Male" in "0" und "Female" in "1".

30
RohannG

Tun Sie dies nicht auf der Ansichtsebene. Setzen Sie den Standardwert einfach auf die Eigenschaft im Konstruktor Ihres Ansichtsmodells. Sauber und einfach. In Ihren Post-Backs füllt Ihr ausgewählter Wert automatisch die richtige Auswahl.

Zum Beispiel

public class MyViewModel
{
        public MyViewModel()
        {
            Gender = "Male";
        }
}

<table>
  <tr>
	<td><label>@Html.RadioButtonFor(i => i.Gender, "Male")Male</label></td>
	<td><label>@Html.RadioButtonFor(i => i.Gender, "Female")Female</label></td>
  </tr>
 </table>

11
arviman

Gehen Sie wie folgt vor, um das Optionsfeld im Bearbeitungsmodus in der MVC-Rasiereransicht zu aktivieren:

<div class="col-lg-11 col-md-11">
     @Html.RadioButtonFor(m => m.Role, "1", Model.Role == 1 ? "checked" : string.Empty) 
     <span>Admin</span>
     @Html.RadioButtonFor(m => m.Role, "0", Model.Role == 0 ? "checked" : string.Empty)
     <span>User</span>
     @Html.HiddenFor(m => m.Role)
</div>

Hoffe es hilft!

0
Hai Dinh

So mache ich es und funktioniert sowohl für das Erstellen als auch für das Bearbeiten:

//How to do it with enums
<div class="editor-field">
   @Html.RadioButtonFor(x => x.gender, (int)Gender.Male) Male
   @Html.RadioButtonFor(x => x.gender, (int)Gender.Female) Female
</div>

//And with Booleans
<div class="editor-field">
   @Html.RadioButtonFor(x => x.IsMale, true) Male
   @Html.RadioButtonFor(x => x.IsMale, false) Female
</div>

die angegebenen Werte (true und false) sind die Werte, die die Engine als Werte für das HTML-Element wiedergibt, d. h .:

<input id="IsMale" type="radio" name="IsMale" value="True">
<input id="IsMale" type="radio" name="IsMale" value="False">

Die geprüfte Eigenschaft ist vom Model.IsMale-Wert abhängig.

Die Razor-Engine scheint den eingestellten Optionsfeld-Wert intern an Ihren Modellwert anzugleichen, wenn dafür eine korrekte Konvertierung von und in eine Zeichenfolge vorhanden ist .. Dies muss also nicht als HTML-Attribut in der Hilfsmethode hinzugefügt werden.

0
Nikolay

Aktivieren Sie das Kontrollkästchen für beide Optionsfelder. Und dann zeigen/verbergen Sie das gewünschte Dokument im Dokument fertig.

 <div class="form-group">
                            <div class="mt-radio-inline" style="padding-left:15px;">
                                <label class="mt-radio mt-radio-outline">
                                    Full Edition
                                    <input type="radio" value="@((int)SelectEditionTypeEnum.FullEdition)" asp-for="SelectEditionType" checked>
                                    <span></span>
                                </label>
                                <label class="mt-radio mt-radio-outline">
                                    Select Modules
                                    <input type="radio" value="@((int)SelectEditionTypeEnum.CustomEdition)" asp-for="SelectEditionType" checked>
                                    <span></span>
                                </label>

                            </div>
                        </div>
0

Hier ist der Code, mit dem der Wert des aktivierten Optionsfelds abgerufen und das Optionsfeld entsprechend seines Werts in Bearbeitungsform aktiviert wird:

Controller:

[HttpPost]
public ActionResult Create(FormCollection collection)
{
    try
    {
        CommonServiceReference.tbl_user user = new CommonServiceReference.tbl_user();
        user.user_gender = collection["rdbtnGender"];
        return RedirectToAction("Index");
    }
    catch(Exception e)
    {
        throw e;
    }
}

public ActionResult Edit(int id)
{
    CommonServiceReference.ViewUserGroup user = clientObj.getUserById(id);
    ViewBag.UserObj = user;
    return View();
}

ANSICHT:

Erstellen:

<input type="radio" id="rdbtnGender1" name="rdbtnGender" value="Male" required>
<label for="rdbtnGender1">MALE</label>
<input type="radio" id="rdbtnGender2" name="rdbtnGender" value="Female" required>
<label  for="rdbtnGender2">FEMALE</label>

Bearbeiten:

<input type="radio" id="rdbtnGender1" name="rdbtnGender" value="Male" @(ViewBag.UserObj.user_gender == "Male" ? "checked='true'" : "") required>
<label for="rdbtnGender1">MALE</label>

<input type="radio" id="rdbtnGender2" name="rdbtnGender" value="Female" @(ViewBag.UserObj.user_gender == "Female" ? "checked='true'" : "") required>
<label for="rdbtnGender2">FEMALE</label>
0
Prem Patel