2014-03-06 40 views
0

我創建了一個登錄頁面,內置了AccountModelAccountController。現在我有另一個名爲TestController的控制器,它將數據庫中的數據發送到我的TestView從控制器移到不同的視圖

我現在想要發送的數據是從TestController發送到AccountView中顯示的。

基本上我想要做的是在帳戶視圖的loginpage上顯示一個飼料,問題是數據來自我的TestController,所以我現在不怎麼傳遞這些數據。

所以我有這樣的:

  1. 控制器:的AccountController - >型號:AccountModels - >查看:帳號 - > login.cshtml
  2. 控制器:的TestController - >型號:比較 - >查看:測試 - > index.cshtml

我想在#1視圖中顯示來自#2的內容。這可能嗎?

回答

3

有幾種方法可以做到這一點。我強烈建議您查看教程視頻here

您可以在您的TestController中創建一個返回部分視圖的操作。

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

在你login.cshtml視圖中,您會通過調用@ Html.Action(「測試」,「的TestController」)

+0

嗨,得了這與一些小的修改工作。 「索引中刪除了.cshtml。cshtml「,然後從@ Html.Action(」Test「,」TestController「)中的」TestController「中刪除控制器。 非常感謝! – darrrrUC

1

使用返回類型ViewResult創建一個操作,該操作將返回接受字符串參數的重載ViewResult。該字符串是您的視圖的名稱。

或者您可以使用RedirectAction重定向到不同的控制器的操作。我認爲這是你以後的樣子。

0

如果你想重定向到一起帳戶頁面,從顯示的的TestController局部視圖與數據。以下是我的建議。

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

如果您想要基於ajax的帳戶視圖和測試視圖在單個頁面中呈現。嘗試Ajax方式

  1. Login.cshtml

    < DIV ID = "飼料" > </DIV >

  2. Index.cshtml

查看

<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); 
    } 
} 
相關問題