Vì vậy, tôi có một chế độ xem được gọi là chỉ mục đưa ra tất cả các chuỗi trong cơ sở dữ liệu của tôi. Sau đó, bên trong cái nhìn đó tôi đang tải tất cả các ý kiến về các chủ đề. Khi tôi gọi vào biểu mẫu của tôi được cho là tạo một chú thích mới, nó vẫn nói với tôi rằng trạng thái mô hình của tôi không hợp lệ. Nó cho tôi biết rằng nó không thể chuyển đổi từ chuỗi kiểu để nhập hồ sơ hoặc nhận xét hoặc thẻ. Ban đầu tôi đã có điều này là mã của tôi:Trạng thái mô hình không hợp lệ
public ActionResult AddComment(Thread thread, string commentBody)
{
if (ModelState.IsValid)
{
_repository.AddComment(thread, comment);
TempData["Message"] = "Your comment was added.";
return RedirectToAction("Index");
}
Sau đó, tôi đã thay đổi nó như thế này:
public ActionResult AddComment(Thread thread, string commentBody)
{
Profile profile = _profileRepository.Profiles.FirstOrDefault(x => x.Id == thread.ProfileId);
Tag tag = _tagRepository.Tags.FirstOrDefault(t => t.Id == thread.TagId);
thread.ThreadTag = tag;
thread.Profile = profile;
Comment comment = new Comment()
{
CommentBody = commentBody,
ParentThread = thread
};
if (ModelState.IsValid)
{
_repository.AddComment(thread, comment);
TempData["Message"] = "Your comment was added.";
return RedirectToAction("Index");
}
này vẫn nói với tôi rằng tình trạng mô hình của tôi không hợp lệ. Làm thế nào để tôi có được nó để nó không cố gắng thay đổi trạng thái?
Ngoài ra ở đây là hình thức đang được sử dụng để gọi hành động này:
@using(Html.BeginForm("AddComment", "Thread", mod))
{
<input type="text" name="AddComment" id="text" />
<input type="submit" value="Save"/>
}
Trong trường hợp của mã trên mod là mô hình mà là một chủ đề. Và theo yêu cầu ở đây là tất cả mọi thứ bên trong chủ đề:
public Thread()
{
this.ChildComments = new HashSet<Comment>();
}
public int Id { get; set; }
public string TopicHeader { get; set; }
public string TopicBody { get; set; }
public Nullable<int> UpVotes { get; set; }
public Nullable<int> DownVotes { get; set; }
public int ProfileId { get; set; }
public int TagId { get; set; }
public virtual Profile Profile { get; set; }
public virtual ICollection<Comment> ChildComments { get; set; }
public virtual Tag ThreadTag { get; set; }
Và cuối cùng là nhận xét về lớp:
public partial class Comment
{
public int Id { get; set; }
public string CommentBody { get; set; }
public int UpVotes { get; set; }
public int DownVotes { get; set; }
public virtual Thread ParentThread { get; set; }
}
bạn cần hiển thị đối tượng 'Chủ đề' trông như thế nào. – RPM1984
Vì vậy, tôi đã cố gắng để loại bỏ kiểm tra mô hình và xem nếu điều đó làm việc. Bây giờ tôi nhận được lỗi này: "Một đối tượng thực thể không thể được tham chiếu bởi nhiều trường hợp của IEntityChangeTracker." –
bây giờ bạn đang nói về khung Entity. Bạn cần cung cấp thêm thông tin. '_repository.AddComment (thread, comment)' làm gì? Có vẻ như tất cả những gì bạn cần làm là tìm chuỗi hiện có bằng ThreadId, sau đó thực hiện 'thread.Comments.Add (newComment);' sau đó lưu chuỗi. nên là nó. – RPM1984