Beim Erstellen einer neuen Ansicht und Auswählen von Vorlage bearbeiten erstellt die Vorlage ein Textfeld für den Primärschlüssel, der nicht bearbeitet werden kann.ASP.Net MVC Einfach Daten aus Standardvorlage bearbeiten
<%=Html.TextBox("CompanyID", Model.CompanyID)%>
Also, um die Steuerung von Sicht zu löschen, wird das Problem verursachen: die Sammlung, die Post-Controller hat die CompanyID = 0, so wird kein bearbeiten erfolgen. Aber wenn ich diese Codezeile zur Ansicht zurück lege, hat die CompanyID in der gebuchten Sammlung den richtigen Wert. Ich mache viel wie dieses Tutorial: http://www.asp.net/learn/mvc/tutorial-21-vb.aspx, und dort (graue Box über "Listing 6 - Controllers \ HomeController.vb (Methoden bearbeiten)" Abschnitt) es heißt, Sie können das Steuerelement löschen, aber es funktioniert nicht .. irgendeinen Rat ?
Aktualisiert Ok, für mehr erklären, geht hier 2 Probleme:
Problem 1 in diesem Code:
<AcceptVerbs(HttpVerbs.Post)> _
Function Edit(ByVal movieToEdit As Movie) As ActionResult
, wenn Sie die MovieID Textbox aus Sicht entfernen die MovieID in movietoedit Sammlung ist immer Null, so dass das tutorial von der asp.net-Website wird nicht funktionieren! wenn ich die MovieID aus Sicht löschen will, ich habe die ID an meinen Controller so passieren:
<AcceptVerbs(HttpVerbs.Post)> _
Function Edit(ByVal ID as integer,ByVal movieToEdit As Movie) As ActionResult
jetzt kann ich abfragen Modell dieser ID verwenden .. das ist kein Problem, aber es dauert mir einige Male herauszufinden, wie ich Schritt für Schritt von der Website gemacht habe!
Problem 2 Also, wie zu tun, ohne die MovieID in Sicht zu verwenden, auch in versteckten Textbox?
Ich benutze dies als meinen Controller: (mit Enity Rahmen)
<AcceptVerbs(HttpVerbs.Post)> _
Function Edit(ByVal id As Integer, ByVal collection As Company) As ActionResult
If Not ModelState.IsValid Then
Return View()
End If
Try
Dim c = _db.CompanySet.FirstOrDefault(Function(m) m.CompanyID = id)
If c Is Nothing Then
Return RedirectToAction("index")
End If
_db.ApplyPropertyChanges(c.EntityKey.EntitySetName, collection)
_db.SaveChanges()
Return RedirectToAction("Index")
Catch ex As Exception
Throw ex
End Try
End Function
Und wenn ich CompanyID aus meiner Sicht (Textbox oder verstecktes Feld) zu entfernen wird es mir aus c.EntityKey.EntitySetName diesem Fehler geben:
Der ObjectStateManager enthält keinen ObjectStateEntry mit einem Verweis auf ein Objekt vom Typ 'Companies.Company'.
und wenn ich so etwas wie
<%= Html.TextBox("CompanyName", Model.CompanyName) %>
hinzufügen wird es funktionieren .. Ich bin verwirrt!
Anmerkung: Ich überprüfte den Code mehr als 10 Mal, und ich frage mich, ob alles da ist, ich falsch mache oder das Tutorial ist falsch ..
siehe bitte Frage, es wird aktualisiert – mohamadreza