-1

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

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

相关代码为:

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

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

4

1 回答 1

1

如果您的用户通过了身份验证,并且如果您希望您的用户在下次访问您的网站时拥有这些设置,您应该考虑使用 Asp.Net Membership Profiles。您还可以选择将设置存储在数据库中。

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

在将用户重定向到 Home.Index 之前,您还可以选择将设置存储在 ViewBag 中。您可以通过ViewBag.Settings = configuration在返回视图之前进行设置来做到这一点。然后您可以@ViewBag.Settings从您的视图中访问设置。请注意,此方法是有损的……例如,转到其他页面,您已经丢失了设置。

对于未经身份验证的用户,会话可能是要走的路。

于 2012-04-24T04:32:15.000 回答