从控制器移动到不同的视图

时间:2014-03-06 21:57:13

标签: c# asp.net-mvc

我创建了一个内置AccountModelAccountController的登录页面。现在我有另一个名为TestController的控制器,它将数据从数据库发送到我的TestView

我现在希望将TestController发送的数据发送到AccountView

基本上我要做的是在帐户视图的登录页面上显示Feed,问题是数据来自我的TestController,所以我现在不知道如何传递这些数据。

所以我有这个:

  1. 控制器:AccountController - >型号:AccountModels - >查看:帐户 - > login.cshtml
  2. 控制器:TestController - >型号:比较 - >查看:测试 - > index.cshtml
  3. 我想在#1视图中显示#2中的内容。这可能吗?

3 个答案:

答案 0 :(得分:3)

有几种方法可以做到这一点。我强烈建议您查看教程视频here

您可以在TestController中创建一个返回局部视图的动作。

public ActionResult Test()
{
    return PartialView("index.cshtml");
}

在您的login.cshtml视图中,您将通过调用@ Html.Action(“Test”,“TestController”)来显示TestController的局部视图

答案 1 :(得分:1)

创建一个返回类型为ViewResult的操作,该操作将返回带有字符串参数的重载ViewResult。该字符串是视图的名称。

或者您可以使用RedirectAction重定向到其他控制器的操作。我认为这就是你所追求的目标。

答案 2 :(得分:0)

如果要与数据一起重定向到“帐户”页面。以下是我的建议。

public ActionResult PostToAccount() {
    var accountModel = new AccountModel();
    return RedirectToAction("Account", "Account", accountModel);
}

如果您希望基于ajax,其中“帐户”视图和“测试”视图都在单个页面中呈现。尝试ajax方法

  1. Login.cshtml

    < div id =“feed”>< / div>

  2. Index.cshtml

  3. 查看

    <script>
    function postData() {
        $.ajax({
           url: '/Test/PostToAccount'
           data: {
              someData: 'feed'
           },
           success: function(data) {
              $("#feed").data(data.result);
           }
        });
    }
    </script>
    <button onclick="postData"></button>
    

    控制器

    public class TestController : Controller {
         public ActionResult PostToAccount(string someData) {
           var accountModel = new AccountModel();
           accountModel.Feed = feed;
           return View("~/Views/Test/Index.cshtml", accountModel);
         }
    }
    
相关问题