Ich versuche, die create-Funktion zu erhalten, damit der Benutzer ausgewählte Werte in die Datenbank einträgt. Wenn die Schaltfläche zum Erstellen gedrückt wird, wird kein Fehler ausgegeben, aber die Daten werden nicht aufgefüllt. Ich bin mir ziemlich sicher, dass meine Frequenzfelder das Problem verursachen, aber ich konnte keine Lösung finden.Funktion erstellen, die keine Daten in der Datenbank speichert
Es gibt zwei verschiedene Arten von Frequenzen, die ein Benutzer je nach seiner "Notification Name" -Auswahl auswählen kann. Eine Auswahl enthält 3 separate Felder für einen numerischen Wert, Zeitrahmen (Woche, Monat usw.) und eine Vorher/Nachher-Auswahl. Der andere gibt einfach sofort als statisches Textfeld aus. Unabhängig davon, welche Option gewählt wird, sollten die Häufigkeitsdaten in eine Zelle in der Datenbank eingegeben werden, die dann bei Bedarf mit Hilfe von Rohrleitungen getrennt wird. Ich bin immer noch ziemlich neu in C# MVC, so dass jede Hilfe sehr geschätzt wird.
Controller:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "Id,notificationType1,recipientTypeId,frequency")] NotificationType notificationType)
{
if (ModelState.IsValid)
{
db.NotificationType.Add(notificationType);
db.SaveChanges();
return RedirectToAction("Create");
}
ViewBag.recipientTypeId = new SelectList(db.RecipientType, "Id", "recipientRole", notificationType.recipientTypeId);
return View(notificationType);
}
Ansicht
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.notificationType1, "Notification Name", htmlAttributes: new { @class = "control-label col-md-2 helper-format" })
<div class="col-md-10" id="type_selection">
@Html.DropDownList("notificationType1", new List<SelectListItem> {
new SelectListItem { Text = "Make a Selection", Value="" },
new SelectListItem { Text = "Incomplete Documents", Value= "Incomplete Documents" },
new SelectListItem { Text = "All Documents Complete", Value = "All Documents Complete" },
new SelectListItem { Text = "Documents Requiring Action", Value = "Documents Requiring Action" }
}, new { @class = "helper-format", @id = "value_select", style = "font-family: 'Roboto', Sans Serif;" })
@Html.ValidationMessageFor(model => model.notificationType1, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group" id="frequency_group">
@Html.LabelFor(model => model.frequency, "Frequency", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-sm-3" id="frequency_group">
@Html.TextBoxFor(model => model.frequency, new { @class = "textbox-width", @placeholder = "42" })
@Html.DropDownList("frequency", new List<SelectListItem>
{
new SelectListItem { Text = "Day(s)", Value= "| Day"},
new SelectListItem { Text = "Week(s)", Value= "| Week"},
new SelectListItem { Text = "Month(s)", Value= "| Month"}
})
@Html.DropDownList("frequency", new List<SelectListItem>
{
new SelectListItem { Text = "Before", Value= "| Before"},
new SelectListItem { Text = "After", Value= "| After"}
})
</div>
<p class="col-sm-2" id="psdatetext">The Beginning</p>
</div>
<div class="form-group" id="freq_instant">
@Html.LabelFor(model => model.frequency, "Frequency", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="instant_text">
<p>Instantaneous</p></div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.recipientTypeId, "Notification For", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("recipientTypeId", new List<SelectListItem>
{
new SelectListItem { Text = "Me", Value= "Me"},
new SelectListItem { Text = "Account Manager", Value="Account Manager" },
new SelectListItem { Text = "Candidate", Value= "Candidate"},
new SelectListItem { Text = "Recruiter", Value="Recruiter" },
new SelectListItem { Text = "Manager", Value= "Manager"}
})
</div>
</div>
<div class="form-group">
<div class="col-md-offset-1 col-md-10">
<div id="hovercreate">
<button type="submit" value="CREATE" class="btn btn-primary" id="createbtn">CREATE</button>
</div>
</div>
</div>
</div>
}
JS für Frequenzoptionen
@Scripts.Render("~/bundles/jquery")
<script type="text/javascript">
$(document).ready(function() {
$('#frequency_group').hide()
$('#freq_instant').hide()
$('#value_select').change(function() {
var selection = $('#value_select').val();
$('#frequency_group').hide();
switch (selection) {
case 'Incomplete Documents':
$('#frequency_group').show();
break;
case 'All Documents Complete':
$('#frequency_group').show();
break;
}
});
$('#value_select').on('change', function() {
if (this.value == 'Documents Requiring Action') {
$("#freq_instant").show();
}
else {
$("#freq_instant").hide();
}
});
});
Ist das mit Entity Framework-Code zuerst? Wenn ja, warum überprüfen Sie nicht die SQL, die ausgegeben wird? Fügen Sie einen Logger zu ctx.Database.Log hinzu, schreiben Sie vielleicht in die Trace-Ausgabe. –
Beobachten Sie Ihre HTTP-Anfragen mit den Netzwerkwerkzeugen Ihres Browsers. Ist das Formular POSTing an die richtige URL? – mason
Setzen Sie einen Unterbrechungspunkt, debuggen Sie und finden Sie heraus, wenn es einen Fehler in den Daten gibt, die Sie senden. – Dhanashree