1

私は主にクライアント側でノックアウトjsで動作するmvcアプリを持っています。さまざまなタイプのインストール用に構成する必要があるため、たとえば、いくつかの色のカスタム パラメーターを用意します。今、私はすべてをクライアントのjsファイルに入れますが、これはアプリの実行中に変更されないものであるため、これをサーバー側に置き、それらのカスタムパラメーターに応じてビューを変更して、ページがちょうどサーバー側で適切な色でレンダリングされます。

MVCでこれを行う最良の方法は何ですか? 私が見つけたすべての答えはConfigurationManager.GetSection、web.configファイルから読み取ることですが、mvcで機能するかどうか、その後モデルに値を入れてビューに添付する必要があるかどうかはあまり明確ではありません。

このような何かが常に提案されています:var somevar = "@item"しかし、ビューには何がitemありますか?

4

4 に答える 4

1

<appSettings> セクションを web.config に追加できます。中に文字列を追加 <add key="" value="" />します。次に、このような値をコントローラーで次のように使用できます。

ViewData["YourKey"] = ConfigurationManager.AppSettings["YourKey"].

最後に、ビューに似たようなものを書きます:

var value = @(ViewData["YourKey"])
于 2013-08-27T12:54:43.540 に答える
1

他の回答を拡張すると、この値をクライアント側の JavaScript に挿入することができます。JS が CSHTML ファイルにある場合は、次のようにします。

//Controller Action
public ActionResult SomeAction()
{
    ViewBag.Color = "green"; // Get this from ConfigurationManager.AppSettings, database, or anywhere
    return View();
}

// on the view
<script type="text/javascript">
    var myColor = '@ViewBag.Color';
    // use myColor as any other jS variable
</script>

JavaScript が別の .js ファイルにある場合は、.js ファイルで使用する前に、.cshtml (または .aspx) から変数を取得する必要があります。

ビューの内容に関する質問に答えるにitemは:

この場合、それはカミソリ ページの変数です。ビューが厳密に型指定されている場合、上部にモデルが定義されており、Modelを使用してページで使用できる変数です@Model。モデルが何らかのコレクションである場合、多くの場合、人々はそれをループして、コレクション内の各アイテムのアイテムを次のように出力します。

@foreach(var item in Model)
{
  <span>@item</span>
}

ただし、変数はその場で作成して、次のように使用することもできます。

@{
    var item = "some string";
    var foo = "bar";
 }

次に、上記のように JavaScript で使用します。

<script type="text/javascript">
    var item = '@item';
</script>
于 2013-08-27T13:00:25.480 に答える