存储要由其他操作使用的用户定义的配置设置

时间:2012-04-23 17:10:09

标签: asp.net-mvc

在我当前的网络应用程序中,我想允许用户修改某些自然语言解析设置的某些设置。

但是我对如何传递这些设置感到困惑 - 用户将从主页转到设置页面,在提交表单后,用户将被带回主页,他们可以愉快地搜索。

相关代码是:

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

部分视图呈现如下:

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

基本上我对如何将这些值从设置页面传递到主页并将设置与该用户联系起来感到困惑。

1 个答案:

答案 0 :(得分:1)

如果您的用户已通过身份验证,并且您希望用户在下次访问您的网站时进行设置,则应考虑使用Asp.Net会员资格。您还可以选择将设置存储在数据库中。

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

在将用户重定向到Home.Index之前,您还可以选择将设置存储在ViewBag中。您可以在返回视图之前设置ViewBag.Settings = configuration来执行此操作。然后,您可以在视图中访问@ViewBag.Settings中的设置。请注意,此方法有损...如,转到其他页面,您丢失了设置。

对于未经身份验证的用户,会话可能是最佳选择。