Haben Sie Ihre Ansicht Modell wie dies die CheckBox Artikel darzustellen
public class ChannelViewModel
{
public string Name { set;get;}
public int Id { set;get;}
public bool IsSelected { set;get;}
}
Jetzt ist Ihre Hauptansichtsmodell wie diese in Ihrer GET
Aktion
public class AlertViewModel
{
public int AlertId { get; set; }
public List<ChannelViewModel> UserChannelIds { get; set; }
//Other Properties also her
public AlertViewModel()
{
UserChannelIds=new List<ChannelViewModel>();
}
}
Jetzt wird, füllen Sie die Werte des ViewModels und sendete es an die Ansicht.
public ActionResult AddAlert()
{
var vm = new ChannelViewModel();
//The below code is hardcoded for demo. you mat replace with DB data.
vm.UserChannelIds.Add(new ChannelViewModel{ Name = "Test1" , Id=1});
vm.UserChannelIds.Add(new ChannelViewModel{ Name = "Test2", Id=2 });
return View(vm);
}
Jetzt erstellen wir ein EditorTemplate. Zum Views/YourControllerName
und Kreta einen Ordner namens „EditorTemplate“ und Erstellen Sie eine neue Ansicht es mit dem gleichen Namen wie der Name (ChannelViewModel.cshtml
)
Fügen Sie diesen Code ro Ihre neue Editor-Vorlage.
@model ChannelViewModel
<p>
<b>@Model.Name</b> :
@Html.CheckBoxFor(x => x.IsSelected) <br />
@Html.HiddenFor(x=>x.Id)
</p>
Jetzt in Ihrer Hauptansicht, Rufen Sie Ihre Editor-Vorlage der EditorFor
Html Helper-Methode. Jetzt
@model AlertViewModel
<h2>AddTag</h2>
@using (Html.BeginForm())
{
<div>
@Html.LabelFor(m => m.AlertId)
@Html.TextBoxFor(m => m.AlertId)
</div>
<div>
@Html.EditorFor(m=>m.UserChannelIds)
</div>
<input type="submit" value="Submit" />
}
wenn Sie das Formular veröffentlichen, müssen Sie Ihr Modell die UserChannelIds
Sammlung, wo die ausgewählten Ankreuzfelder einen True
Wert für die IsSelected
Immobilien werden zu müssen.
[HttpPost]
public ActionResult AddAlert(AlertViewModel model)
{
if(ModelState.IsValid)
{
//Check for model.UserChannelIds collection and Each items
// IsSelected property value.
//Save and Redirect(PRG pattern)
}
return View(model);
}
Vielen Dank für die Buchung. Ich bin jedoch immer noch ein bisschen verwirrt. Es erscheint übertrieben, drei Klassen und drei Editor-Vorlagen hinzuzufügen, um einige Kontrollkästchen einem Ansichtsmodell zuzuordnen. Ist das der einfachste Weg? –
Wo sind 3 Klassen und 3 Editor-Vorlagen? Ich sehe 2 Klassen und 1 Editor Vorlage – Shyju
Ich habe drei Liste Eigenschaften, so nahm ich an, dass ich drei Klassen und drei Bearbeitungsvorlagen benötigen würde, um Ihre Lösung zu verwenden. Ist das nicht korrekt? –