Asp.net mvc 存储用户定义的配置设置以供其他操作使用

Asp.net mvc 存储用户定义的配置设置以供其他操作使用,asp.net-mvc,Asp.net Mvc,在我当前的web应用程序中,我希望允许用户修改一些设置,以便进行一些自然语言解析 然而,我对如何传递这些设置感到困惑——用户将从主页转到设置页面,在提交表单时,用户将被带回主页,在那里他们可以愉快地搜索 有关守则如下: public ActionResult Settings(Configuration configuration) { TempData["configStructure"] = configurationStructure; return

在我当前的web应用程序中,我希望允许用户修改一些设置,以便进行一些自然语言解析

然而,我对如何传递这些设置感到困惑——用户将从主页转到设置页面,在提交表单时,用户将被带回主页,在那里他们可以愉快地搜索

有关守则如下:

 public ActionResult Settings(Configuration configuration)
   {
        TempData["configStructure"] = configurationStructure;
        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(“搜索结果”,结果);
}
在局部视图呈现为这样的情况下:

@model MyApp.MySettings.ConfigurationApi

@if (Model == null)
{
    using (Ajax.BeginForm("Search", "Home", new AjaxOptions
    {
        HttpMethod = "GET",
        InsertionMode = InsertionMode.Replace,
        UpdateTargetId = "searchResults",
    }))
    {
        <input type="text" name="q" />
        <input type="submit" value="Search" />
    }
}
else
{
    using (Ajax.BeginForm("Search", "Home", new { configuration = Model }, new AjaxOptions
    {
        HttpMethod = "GET",
        InsertionMode = InsertionMode.Replace,
        UpdateTargetId = "searchResults",
     }))
    {
        <input type="hidden" name="configuration" />
        <input type="text" name="searchString" />
        <input type="submit" value="Search" />
    }
}
@model MyApp.MySettings.ConfigurationApi
@if(Model==null)
{
使用(Ajax.BeginForm(“搜索”,“主页”,新的AjaxOptions
{
HttpMethod=“GET”,
InsertionMode=InsertionMode.Replace,
UpdateTargetId=“searchResults”,
}))
{
}
}
其他的
{
使用(Ajax.BeginForm(“搜索”、“主页”、新的{configuration=Model})、新的AjaxOptions
{
HttpMethod=“GET”,
InsertionMode=InsertionMode.Replace,
UpdateTargetId=“searchResults”,
}))
{
}
}

基本上,我对如何将这些值从设置页面传递到主页和将设置绑定到该用户感到困惑。

如果您的用户已被验证,并且如果您希望用户下次访问网站时有设置,则应考虑ASP.NET成员资格配置文件。您还可以选择将设置存储在数据库中

您可以选择将对象存储在会话变量中,但这会让一些人生气

您还可以选择在将用户重定向到Home.Index之前将设置存储在ViewBag中。您可以通过在返回视图之前设置
ViewBag.Settings=configuration
来完成此操作。然后,您可以从视图中访问
@ViewBag.settings
中的设置。请注意,此方法是有损的…如中所示,转到其他页面时,您已丢失设置

对于未经身份验证的用户,会话可能是一种方式