ASP.NET MVC2에서 좋은 개체 지향 디자인을 따르는 데 문제가 있습니다.이 문제는 ViewModel과 뷰가 상호 작용하여 사용자가 정보를 게시 할 수 있습니다.ASP.NET MVC2 :보기,보기 모델 및 게시 요청
사용자가 응답 작업을 사용하여 스레드에 대한 응답을 작성할 수있는 포럼을 구현했습니다. 내 ReplyViewModel에는 threadId에 대한 int와 응답 내용에 대한 문자열이 들어 있습니다. Reply 액션은 ThreadId가있는 ReplyViewModel을 생성하므로 사용자가 응답하는 스레드를 알 수 있습니다. ReplyView는 ReplyViewModel에 강하게 입력되며 사용자가 모델의 내용을 편집 할 수있는 양식을 갖습니다. 그런 다음 사용자는 threadId를 매개 변수로 사용하여 회신 작업에 게시 할 수 있습니다.
제대로 작동하지만 제대로 작동하지 않는다고 생각합니다. 각 게시물에는 두 개의 ReplyViewModels가 포함됩니다. 하나는 threadId이지만 null 콘텐츠이고 다른 하나는 내용이 있지만 null ThreadId입니다. Reply View는 새로운 ReplyViewModel을 생성하고 있으며, 뷰에 전달 된 ReplyViewModel을 편집해야한다고 생각합니다. 그러나 어떻게해야할지 모르겠습니다.
내 질문에 대답하는 것만으로는 충분하지 않습니다 경우<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<mvcForum.ViewModels.ReplyViewModel>" %>
<%: Html.TextAreaFor(model=> model.content, new{TextMode="multiline", id="postbox"})%>
<input type="submit" value="Reply" />
는, 여기에 전체보기입니다 : 여기
뷰의 제거 다운 버전의 http://pastebin.com/BFGL4p67뷰 모델은 단지 문자열 문자 그대로가 (내용) 및 int (threadId)입니다.
컨트롤러 :[Authorize]
public ActionResult Reply(int id)
{
ReplyViewModel reply = new ReplyViewModel
{
ThreadId = id
};
return View(reply);
}
[HttpPost]
public ActionResult Reply(int id, ReplyViewModel model)
{
/**TODO: Catch when no user*/
var newPost = new ForumPost
{
UserId = (Guid)Membership.GetUser(User.Identity.Name).ProviderUserKey,
ThreadId = id,
postContent = model.content
};
db.AddToForumPosts(newPost);
db.SaveChanges();
return RedirectToAction("Index");
}
그래서 내 질문에 내가 ReplyViewModel의 단일 인스턴스를 사용할 수 난 할 노력하고있어 무엇을 할 수있는 가장 좋은 방법은 년대에, 컨트롤러에서 전달하는 "인가? 보기, 다시 컨트롤러로? "
나는 당신이 여기서 잘하고 있다고 생각한다. 당신이 해결하려고하는 정확한 이슈가 무엇인지 확실하지 않습니까? – CubanX
각 인스턴스에서 하나의 필드 만 사용하여 완전히 분리 된 두 가지 작업을 수행하는 클래스 인스턴스 두 개를 사용하는 것은 잘못되었습니다. 같은 인스턴스를 사용할 수 있다면 더 의미가 있습니다. – divider