20

私のプロジェクト構造は次のようなものです:

  • コントローラ/ArticlesController.cs
  • コントローラー/コメントController.cs
  • ビュー/記事/Read.aspx

Read.aspx は、「出力」というパラメーターを受け取ります。これは、id による記事の詳細とそのコメントであり、から渡されます。ArticlesController.cs

今、コメントを書いてから読みたい:: write()& Read()funct inCommentsController.cs

コメント付きの記事を読むために、から出力パラメーターを渡してViews/Articles/Read.aspxから呼び出したいCommentsController.csCommentsController.cs

これどうやってするの?

アップデート

ここにコード:

public class CommentsController : AppController
{
    public ActionResult write()
    {
        //some code
        commentRepository.Add(comment);
        commentRepository.Save();

        //works fine till here, Data saved in db
        return RedirectToAction("Read", new { article = comment.article_id });
    }

    public ActionResult Read(int article)
    {   
        ArticleRepository ar = new ArticleRepository();
        var output = ar.Find(article);

        //Now I want to redirect to Articles/Read.aspx with output parameter.
        return View("Articles/Read", new { article = comment.article_id });
    }
}

public class ArticlesController : AppController
{   
    public ActionResult Read(int article)
    {
        var output = articleRepository.Find(article);

        //This Displays article data in Articles/Read.aspx
        return View(output);
    }
}
4

4 に答える 4

58

別のコントローラーに属するビューを返したい場合に質問に直接答えるには、ビューの名前とそのフォルダー名を指定するだけです。

public class CommentsController : Controller
{
    public ActionResult Index()
    { 
        return View("../Articles/Index", model );
    }
}

public class ArticlesController : Controller
{
    public ActionResult Index()
    { 
        return View();
    }
}

また、あるコントローラーから別のコントローラーの読み取りおよび書き込みメソッドを使用することについて話している。他のコントローラーはおそらくhtmlを返すため、別のコントローラーを呼び出すのではなく、モデルを介してこれらのメソッドに直接アクセスする必要があると思います。

于 2012-08-02T06:46:45.720 に答える
2

read.aspx ビューを共有フォルダーに移動できます。そのような状況では標準的な方法です

于 2012-08-02T07:22:17.343 に答える
0

あなたの質問が正しかったかどうかはよくわかりません。多分何かのような

public class CommentsController : Controller
{
    [HttpPost]
    public ActionResult WriteComment(CommentModel comment)
    {
        // Do the basic model validation and other stuff
        try
        {
            if (ModelState.IsValid )
            {
                 // Insert the model to database like:
                 db.Comments.Add(comment);
                 db.SaveChanges();

                 // Pass the comment's article id to the read action
                 return RedirectToAction("Read", "Articles", new {id = comment.ArticleID});
            }
        }
        catch ( Exception e )
        {
             throw e;
        }
        // Something went wrong
        return View(comment);

    }
}


public class ArticlesController : Controller
{
    // id is the id of the article
    public ActionResult Read(int id)
    {
        // Get the article from database by id
        var model = db.Articles.Find(id);
        // Return the view
        return View(model);
    }
}
于 2012-08-02T07:11:01.480 に答える