Asp.net mvc 3 在MVC中在视图之间传递数据
我目前正在编写一个web应用程序,它需要将一些配置设置从设置页面传递到带有搜索框的页面 当前,我正在使用以下命令将配置数据从设置页面传递到主页:Asp.net mvc 3 在MVC中在视图之间传递数据,asp.net-mvc-3,asp.net-mvc-routing,Asp.net Mvc 3,Asp.net Mvc Routing,我目前正在编写一个web应用程序,它需要将一些配置设置从设置页面传递到带有搜索框的页面 当前,我正在使用以下命令将配置数据从设置页面传递到主页: public ActionResult Settings(Configuration configuration) { return RedirectToAction("ConfigSet", "Home", configuration); } 在家庭控制器中: public ActionResult ConfigSet(Configurat
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);
}
public PartialViewResult搜索(字符串q)
{
列表结果=此。搜索(q);
返回PartialView(“搜索结果”,结果);
}
在局部视图呈现为这样的情况下:
@using (Ajax.BeginForm("Search", "Home", new AjaxOptions {
HttpMethod = "GET",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "searchResults",
}))
{
<input type="text" name="searchString" />
<input type="submit" value="Search" />
}
@使用(Ajax.BeginForm(“搜索”、“主页”、新的AjaxOptions{
HttpMethod=“GET”,
InsertionMode=InsertionMode.Replace,
UpdateTargetId=“searchResults”,
}))
{
}
我的问题是如何将配置设置传递给局部视图?我已经考虑了几天了,对此我真的很困惑。您可以创建一个viewModel,它会像这样存储您的配置设置
public class MyViewModel
{
public Configuration configuration {get;set;}
public List<Stuff> results {get;set;}
}
如果您再次希望将配置传递给控制器,则
@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" />
}
@使用(Ajax.BeginForm(“搜索”,“主页”,新{config=Model.configuration}新AjaxOptions{HttpMethod=“GET”,InsertionMode=InsertionMode.Replace,UpdateTargetId=“searchResults”,}))
{
}
您的意思是要在服务器上的搜索操作方法中获取配置设置吗?要干净地执行此操作,您必须将它们往返于客户端,这似乎不合逻辑,而且可能不安全(取决于配置中的内容),或者您需要在搜索操作本身中再次检索它们。谢谢。但是,我不确定如何将设置页面上设置的配置传递给SearchViewResult方法。我可以通过configset方法将数据传递到母版页,但无法使用您的想法将配置传递到搜索方法;在ajax request submit(将调用搜索操作)上,您必须将签名更改为public PartialViewResult search(配置配置)
更新了答案,请看一看抱歉,我仍然不明白。请你详细说明一下好吗?我认为这样不行。对不起:用户第一次进入主页(调用搜索方法)时,没有设置新的{config=Model.configuration}。配置设置是由用户在视图中设置的。然后它们将返回主页(我为两个视图提供了单独的控制器)。如果从HomeController调用this.search方法,如何将配置设置发送到search类?是否将用户设置持久化到数据库?如果不是,您实际上只是在谈论会话设置,在这种情况下,您需要使用服务器的会话对象本身,或者将它们存储在cookie中,或者在每个视图的ViewModel上,都有一个名为UserSettings的公共属性,它是一个字符串,您可以序列化和反序列化每个请求。如果您选择后者,请使用BaseViewModel来完成这项工作。
@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" />
}