私はdinamically Webページを翻訳しようとしています。EXTNET MVC。ストアを使用してページにデータを送信する
ウェブはMVCとEXTNETフレームワークで行われます。
私はウェブ上の店舗を使用しています。私はX()にロードしようとしています。リソースファイルの情報を保存します。
ウェブを読み込むと、ストアはデータ(キー、値)付きの辞書を作成するアクションを呼び出します。 それから、リスナーでJavaScript関数を呼び出します。 しかし、このJavaScript関数では、私は値で配列を見つけることはありません。
CSHTMLのコードは次のとおり
@using (Html.BeginForm())
{
var X = Html.X();
@(
X
.Store()
.ID("dsTranslate")
.AutoLoad(true)
.Fields(field =>
{
field.Add("key");
field.Add("value");
}
)
.Listeners(lis=>lis.Load.Fn="TranslateLoaded")
.Proxy(p =>
{
p.Add(
X.AjaxProxy()
.Url("/extnet/Translate")
.Reader(
reader => reader.Add(X.JsonReader().RootProperty("data").TotalProperty("total").IDProperty("key"))
)
);
}
)
)
方法/ extnet /翻訳のための制御コード:
public StoreResult Translate()
{
var lang = "es-ES";
if (Request.Cookies.Count > 0)
lang = Request.Cookies["cultureCode"].Value;
CultureInfo cult = Thread.CurrentThread.CurrentCulture;
try
{
cult = new CultureInfo(lang);
}
catch (Exception ex) { }
ResourceSet res = Resources.ResourceAdministracion.ResourceManager.GetResourceSet(cult, true, false);
IDictionaryEnumerator trav = res.GetEnumerator();
Dictionary<string, string> dict = new Dictionary<string, string>();
while (trav.MoveNext())
{
if (trav.Key.ToString().Length > 2)
dict.Add(trav.Key.ToString(), trav.Value.ToString());
}
var q = from c in dict
select new { key = c.Key, value = c.Value };
return new StoreResult(q, dict.Count);
}
そして、どこで問題があります。スクリプトJS:
var TranslateLoaded = function (objGrid, gridRecords, objOptions) {
for (var i = 0; i < gridRecords.length; i++) {
alert('Clicked');
}
}
オブジェクトgridRecordsは、項目を1つだけ持っている、しかし、私は行動のstoreresultに12以上を送信します。
コードに関する問題についてのご意見はありますか? cshtmlにさらにパラメータが必要ですか?
スクリプトをデバッグすると、私が持っているレコードの数で変数合計数を見ることができますが、どこに配列があるのかわかりません。
私は、次の例のようにやろうとしています: http://sodeve.net/2011/10/how-to-enable-multi-language-translations-in-ext-net-mvc-part-2/
をしかし、それはCSHTMLではなく、すべての私のCSHTMLコードが正しいと例のようなものである場合、私は知りません。