私はasp .netプロジェクトで作業しています。グローバル化してdeveloppez.com(This one)のチュートリアル(私はジュニア開発者です)に従ってください。私はチュートリアルに問題がありますが、いくつかの検索の後に私はそれを解決します。私は何をしたいのはテキストの代わりにフラグを持つことであるhtmlAttributesを使用するとURLの問題が発生する
:現在、私は2つのリンクを得ました。ですから、 '< a>'要素にクラスを追加して背景画像を入れたいと思います。しかし、クラスを追加すると、Html.Helperによって生成されたリンクが奇妙になりつつあります。いくつかのパラメータが追加され、私はなぜそれが理解できません。
EDIT:クラスを追加するとリンクが言語を変更しないと書いているのを忘れてしまいました。
のURL私は私が私の部分図へのリンクを含んでどのようにリンク
<a href="/?Count=6&Keys=System.Collections.Generic.Dictionary%602%2BKeyCollection%5BSystem.String%2CSystem.Object%5D&Values=System.Collections.Generic.Dictionary%602%2BValueCollection%5BSystem.String%2CSystem.Object%5D">English</a>
<a class="drapeauFrance" href="/?Count=6&Keys=System.Collections.Generic.Dictionary%602%2BKeyCollection%5BSystem.String%2CSystem.Object%5D&Values=System.Collections.Generic.Dictionary%602%2BValueCollection%5BSystem.String%2CSystem.Object%5D">[Français]</a>
にクラスを追加した後、私はリンクに
<a href="/en">English</a>
<a href="/">[Français]</a>
URLをクラスを追加する前に、
@using MIFA.Helpers
@Html.LanguageSelectorLink("en", "[English]", "English", null)
@Html.LanguageSelectorLink("fr", "[Français]", "Français", new { @class = "drapeauFrance" })
方法LangageSelectorLinkは動作します
LangageUrl私はHTML属性を追加するときに、URLが変更された理由を私は理解してあなたの助けを求めているpublic static Language LanguageUrl(this HtmlHelper helper, string cultureName, string languageRouteName = "lang", bool strictSelected = false)
{
cultureName = cultureName.ToLower();
var routeValues = new RouteValueDictionary(helper.ViewContext.RouteData.Values);
var queryString = helper.ViewContext.HttpContext.Request.QueryString;
foreach (string key in queryString)
{
if (queryString[key] != null && !string.IsNullOrWhiteSpace(key))
{
if (routeValues.ContainsKey(key))
{
routeValues[key] = queryString[key];
}
else
{
routeValues.Add(key, queryString[key]);
}
}
}
var actionName = routeValues["action"].ToString();
var controllerName = routeValues["controller"].ToString();
routeValues[languageRouteName] = cultureName;
var urlHelper = new UrlHelper(helper.ViewContext.RequestContext, helper.RouteCollection);
var url = urlHelper.RouteUrl("LocalizedDefault", routeValues);
var current_lang_name = Thread.CurrentThread.CurrentUICulture.Name.ToLower();
var isSelected = strictSelected ? current_lang_name == cultureName : current_lang_name.StartsWith(cultureName);
return new Language()
{
Url = url,
ActionName = actionName,
ControllerName = controllerName,
RouteValues = routeValues,
IsSelected = isSelected
};
}
仕組み
public static MvcHtmlString LanguageSelectorLink(this HtmlHelper helper, string cultureName, string selectedText, string unselectedText, object htmlAttributes, string languageRouteName = "lang", bool strictSelected = false)
{
var language = helper.LanguageUrl(cultureName, languageRouteName, strictSelected);
var link = helper.RouteLink(language.IsSelected ? selectedText : unselectedText, "LocalizedDefault", language.RouteValues, htmlAttributes);
return link;
}
。
「LanguageUrl」関数を理解しようとしましたが、問題はここにありますが、私の知識が理解できないか、htmlAttributesのURLへの影響を理解するには弱すぎます。
英語の間違いをした場合は、私の質問を編集するように教えてください。
ご回答いただきありがとうございます。私はあなたが間違って過負荷を打つと思います
ああ、私はこの違いに気付かなかった、あなたは正しい、これは問題だった。あなたの説明と文書の参考書をありがとう。私は学ぶことがたくさんあり、あなたは私がこれをするのを手助けします。本当にありがとう! –