HINWEIS: Bearbeiten das ModellWie Sie einen Abfragezeichenfolgeflag guid Wert in meinen Controller erstellen, ohne die Seltsamkeit
Das Problem hinzuzufügen: ein Abfragezeichenfolgeflag guid Wert gibt ich paßt, versuchen, es in meinen Controller zu bekommen, damit ich eine erstellen kann neuer Rekord damit als Parameter. Die nächste, die ich bisher bekommen habe, lädt einen Datensatz mit allen 0 und Bindestrichen für die GUID (was nicht nur falsch ist, sondern auch sehr komisch aussieht.)
Dies ist in MVC3/EF4 mit einer Legacy-Datenbank und einigen Legacy-Seiten und URLs. Die Anwendung, an der ich arbeite, enthält eine Notizfunktion, mit der Benutzer A Notizen zu Benutzer B machen kann (z. B..) Beide Benutzer haben ihre eigenen GUID-IDs, die sie identifizieren, und die Tabelle, in der die Notizen gespeichert sind Id-Spalte für die Notiz selbst und dann zwei Id-Spalten, um zu verfolgen, welcher Benutzer A ist und welcher Benutzer B für diese spezielle Notiz ist.
Wir können immer davon ausgehen, dass Benutzer A der aktuelle Benutzer ist und seine ID auf diese Weise erhalten. Einer der Legacy-URLs ist, wie Sie die Id für Benutzer B.
Zum Beispiel erhalten: www.mysite.com/notes/user/ED88B0B1-B552-4D63-BD20-C94B837440BE
"Benutzer A" in unserem Beispiel hat die guid von ScannerUserId
"Benutzer B" (aus dem Abfragezeichenfolgeflag) die guid von ScannedCodeId
Hier ist das Modell:
public partial class Note
{
public System.Guid ScannerUserId { get; set; }
public System.Guid ScannedCodeId { get; set; }
public System.Guid NoteId { get; set; }
public string NoteDetail { get; set; }
public virtual Code Code { get; set; }
public virtual Contact Contact { get; set; }
}
hier die Ansicht:
@model MySite.Models.Note
@{
ViewBag.Title = "Create";
}
<h2>Create</h2>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Note</legend>
<div class="editor-label">
@Html.LabelFor(model => model.NoteDetail)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.NoteDetail)
@Html.ValidationMessageFor(model => model.NoteDetail)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
Und hier ist der Controller Abschnitt erstellen:
public class NoteController : Controller
{
//
// GET: /Note/Create
public ActionResult Create()
{
ViewBag.ScannedCodeId = new SelectList(db.Codes, "CodeId", "ScannedCodeId");
ViewBag.ScannerUserId = new SelectList(db.Contacts, "UserId", "ScannerUserId");
return View();
}
//
// POST: /Note/Create
[HttpPost]
public ActionResult Create(Note note)
{
if (ModelState.IsValid)
{
note.NoteId = Guid.NewGuid();
note.ScannerUserId = (Guid)System.Web.Security.Membership.GetUser().ProviderUserKey;
//note.ScannedCodeId = new Guid(Request.QueryString[""]);
note.CreateDate = DateTime.Now;
note.LastActivityDate = DateTime.Now;
db.Notes.Add(note);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.ScannedCodeId = new SelectList(db.Codes, "CodeId", "ScannedCodeId", note.ScannedCodeId);
ViewBag.ScannerUserId = new SelectList(db.Contacts, "UserId", "ScannerUserId", note.ScannerUserId);
return View(note);
}
Wie erhalte ich die GUID, die in der Abfragezeichenfolgeflag in die note.ScannedCodeId so ist, dass die db.SaveChanges up nicht sprengen wird auf mich?
Und auch, danke für das Lesen dieses weit und alles, was Sie tun können, um zu helfen.
Vielen Dank, Shyju. Mit ein wenig Feinabstimmung für den Guid-Typ hat das für mich funktioniert. –