-1

私の現在の 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);
}

部分ビューが次のようにレンダリングされます。

@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

ユーザーが認証されていて、ユーザーが次に Web サイトにアクセスしたときに設定を保持する場合は、Asp.Net メンバーシップ プロファイルを検討する必要があります。設定をデータベースに保存することもできます。

オブジェクトをセッション変数に保存するオプションがありますが、それは一部の人を怒らせます。

ユーザーを Home.Index にリダイレクトする前に、設定を ViewBag に保存することもできます。ViewBag.Settings = configurationビューを返す前に設定することでこれを行うことができます。次に、ビュー内から設定にアクセスできます@ViewBag.Settings。この方法は不可逆であることに注意してください...別のページに移動すると、設定が失われます。

認証されていないユーザーの場合、セッションが有効な場合があります。

于 2012-04-24T04:32:15.000 に答える