在MVC中的视图之间传递数据

时间:2012-04-23 11:37:23

标签: asp.net-mvc-3 asp.net-mvc-routing

我目前正在编写一个网页应用,需要将一些配置设置从设置页面传递到带有搜索框的页面页面。

目前我将配置数据从设置页面传递到主页:

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 个答案:

答案 0 :(得分:2)

您可以创建一个viewModel,它将存储您的配置设置,如

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);     
} 

如果您再次想要将配置传递给控制器​​,那么<​​/ p>

@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" /> 
} 

答案 1 :(得分:0)

您是否想要在服务器上的“搜索”操作方法中获取配置设置?要干净利落地完成它,您要么必须将它们往返于客户端并返回,这看似不合逻辑且可能不安全(取决于您的配置中的内容),或者您需要在“搜索”操作本身内再次检索它们。