ASP.NET MVC2でオブジェクト指向の設計がうまくいかないと問題が発生していますが、ViewModelとビューの相互作用が不十分であると思います情報を投稿すること。ASP.NET MVC2:ビュー、ビューモデル、および投稿のリクエスト
私は、ユーザーが返信アクションを使用してスレッドへの返信を作成できるフォーラムを実装しました。私のReplyViewModelには、threadIdのintと応答の内容の文字列が含まれています。 ReplyアクションはThreadIdでReplyViewModelを作成するので、ユーザーが返信しているスレッドを知ることができます。 Reply Viewは、ReplyViewModelに強く入力され、ユーザがモデルのコンテンツを編集できるようにするフォームを持っています。ユーザーは、threadIdをパラメータとして返信アクションに投稿することができます。
これは機能しますが、これは正しい方法ではないと私は思っています。各投稿には2つのReplyViewModelが含まれています.1つはthreadIdでコンテンツはnull、もう1つはコンテンツではなくnullのThreadIdです。 ReplyViewは新しい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
ViewModelには、文字通りの文字列(コンテンツです)と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
クラスの2つのインスタンスを使用して、各インスタンスで1つのフィールドのみを使用して2つの完全に別々のものを実行するのは間違っているようです。私が同じインスタンスを使用できるかどうかは、もっと意味があります。 – divider