ПРИМЕЧАНИЕ: отредактировано для добавления модели
Проблема: значение guid строки запроса приводит меня в соответствие, пытается вставить его в мой контроллер, чтобы я мог создать новую запись с ним в качестве параметра. Самое близкое, что я получил, загружает запись со всеми 0 и тире для guid (что не только неправильно, но выглядит очень странно.)
Это в MVC3 / EF4 с устаревшей базой данных и некоторыми устаревшими страницами и URL-адресами. Приложение, над которым я работаю, включает в себя функцию создания заметок, где пользователь A может делать заметки о пользователе B (например). Оба пользователя имеют свои собственные идентификаторы guid, которые их идентифицируют, а таблица, где хранятся заметки, имеет Столбец Id для самой заметки, а затем два столбца Id, для отслеживания которых используется Пользователь A и Пользователь B для данной конкретной заметки.
Мы всегда можем предположить, что пользователь А является текущим пользователем, и получить его идентификатор таким образом. Один из устаревших URL-адресов - это способ получения идентификатора для пользователя B.
Например: www.mysite.com/notes/user/ED88B0B1-B552-4D63-BD20-C94B837440BE
«Пользователь A» в нашем примере имеет идентификатор ScannerUserId
«Пользователь B» (из строки запроса) имеет идентификатор ScannedCodeId
Вот модель:
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; }
}
Вот вид:
@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>
}
А вот раздел контроллера на Create:
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);
}
Как я могу получить guid, который находится в строке запроса, в заметку. ScannedCodeId, чтобы db.SaveChanges не взорвал меня?
А также, спасибо, что прочитали это далеко и все, что вы можете сделать, чтобы помочь.