2012-04-23 34 views
1

我目前正在編寫一個web應用程序,它需要將一些配置設置從設置頁面傳遞到帶有搜索框的頁面頁面。在MVC中的視圖之間傳遞數據

目前我正在從設置頁面傳遞配置數據到主頁用:

public ActionResult Settings(Configuration configuration) 
{ 
    return RedirectToAction("ConfigSet", "Home", configuration); 
} 

和家庭控制器:

public ActionResult ConfigSet(Configuration configuration) 
{    
    return View("Index"); 
} 

我產生了局部視圖:

public PartialViewResult Search(string q) 
    { 
     List<Stuff> results = this.Search(q); 
     return PartialView("SearchResults", results); 
    } 

隨着渲染像這樣的局部視圖:

@using (Ajax.BeginForm("Search", "Home", new AjaxOptions { 
HttpMethod = "GET", 
InsertionMode = InsertionMode.Replace, 
UpdateTargetId = "searchResults", 
})) 
{ 
    <input type="text" name="searchString" /> 
    <input type="submit" value="Search" /> 
} 

我的問題是如何將配置設置傳遞給部分視圖?我一直在想這個問題幾天,我對此感到困惑。

回答

2

您可以創建一個視圖模型將保存您的配置設置這樣

public class MyViewModel 
{ 
    public Configuration configuration {get;set;} 
    public List<Stuff> results {get;set;} 
} 

在你的行動回報MyViewModel

public PartialViewResult Search(Configuration config)  
{ 
    var model = new MyViewModel(); 
    //set its properties  
    model.results = this.Search(q);  
    model.configuration = configurationObject;  
    return PartialView("SearchResults", model);  
} 

&如果要再次傳遞配置到控制器然後

@using (Ajax.BeginForm("Search", "Home", new { config = Model.configuration } new AjaxOptions { HttpMethod = "GET", InsertionMode = InsertionMode.Replace, UpdateTargetId = "searchResults", })) 
{  
    <input type="text" name="searchString" />  
    <input type="submit" value="Search" /> 
} 
+0

謝謝。但是,我不確定如何將設置頁面上設置的配置傳遞給搜索viewresult方法。我可以通過configset方法將數據傳遞給母版頁,但無法使用您的想法將配置傳遞給搜索方法。 – 2012-04-23 13:09:35

+0

在您的ajax.beginform中,您可以從model.configuration呈現所有配置內容;在ajax請求提交哪個將要調用搜索動作,爲此,你將不得不將簽名更改爲'公共PartialViewResult搜索(配置配置)' – 2012-04-23 14:02:24

+0

更新了答案,看看 – 2012-04-23 14:10:25

0

你的意思是你想得到你的配置文件服務器上搜索操作方法中的離子設置?要做到這一點,你必須將它們傳送到客戶端並返回,這似乎不合邏輯,可能不安全(取決於配置中的內容),或者需要在搜索操作本身內再次檢索它們。

+0

配置設置由用戶在視圖中設置。然後他們將返回到主頁(我有兩個視圖單獨的控制器)。如果從HomeController調用this.search方法,如何將配置設置發送到搜索類? – 2012-04-23 14:18:36

+0

您是否將用戶設置保存到數據庫?如果沒有,你真的只是在討論會話設置,在這種情況下,你需要使用服務器的Session對象本身,或者將它們存儲在一個cookie中,或者存儲在每個視圖的ViewModel上,有一個叫做UserSettings的公共屬性,它是一個字符串,您可以序列化並反序列化每個請求。如果你做後者,有一個BaseViewModel可以幫你完成工作。 – 2012-04-23 18:14:40

相關問題