Как установить радиокнопку в режиме редактирования в режиме просмотра бритвы MVC
Я новичок в бритве MVC. Я пытаюсь редактировать веб-страницу. У меня есть два переключателя. Мне удастся сохранить данные для значений переключателей. Но когда я пытаюсь изменить это значение, я не могу выбрать тот переключатель, для которого сохраняются данные.
Я перечислил для Gender
public enum Gender
{
Male,
Female
}
Мой код создания: -
<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>
Изменить код как
<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>
Ответы
Ответ 1
Вы написали как
@Html.RadioButtonFor(model => model.gender, "Male", new { @checked = true }) and
@Html.RadioButtonFor(model => model.gender, "Female", new { @checked = true })
Здесь вы взяли пол в качестве типа Enum
и записали значение для переключателя в виде string
type-, изменив "Мужской" на 0 и "Женский" на 1.
Ответ 2
Не делайте этого на уровне представления. Просто установите значение по умолчанию для свойства в конструкторе модели представления. Чистый и простой. В ваших пост-спинах выбранное вами значение автоматически заполнит правильный выбор.
Например
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>
Ответ 3
Вот как я это делаю и работает как для создания, так и для редактирования:
//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>
предоставленные значения (true и false) являются значениями, которые механизм будет отображать как значения для элемента html, т.е.
<input id="IsMale" type="radio" name="IsMale" value="True">
<input id="IsMale" type="radio" name="IsMale" value="False">
И проверенное свойство зависит от значения Model.IsMale.
Движок Razor, похоже, внутренне сопоставляет установленное значение переключателя со значением вашей модели, если для него существует правильное преобразование из строки в строку. Таким образом, нет необходимости добавлять его в качестве атрибута html в вспомогательном методе.
Ответ 4
Добавьте флажок в оба ваших переключателя. А затем показать/скрыть нужный документ в готовом документе.
<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>
Ответ 5
Вот код для получения значения проверенного переключателя и установки переключателя в соответствии с его значением в форме редактирования:
контроллер:
[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();
}
ПОСМОТРЕТЬ:
Создайте:
<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>
Редактировать:
<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>
Ответ 6
Чтобы установить переключатель в режиме редактирования в режиме просмотра бритвы MVC, попробуйте выполнить следующие действия:
<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>
Надеюсь, это поможет!