请求字符串的MVC“品牌形象”?

时间:2014-08-25 18:01:52

标签: c# html asp.net-mvc

在我的MVC应用程序中,我在以下位置有图像。这是来自_Layout.cshtml:

<a href="#"><img src="~/Content/app/images/logo-tlc.png" alt="TLC"></a>

我想改变品牌形象&#34;通过解析查询字符串,比如传递&#34; apl&#34;为动物星球。我已经尝试了以下内容而不知道你是否可以做这种连接字符串。它不起作用:

<a href="#"><img src="~/Content/app/images/logo-" + @Request["brand"] + ".png" alt=@Request["brand"]>

我该如何做到这一点?

现在呈现:

<
               <img src="/Content/app/images/logo-" + apl + ".png" alt=apl>

2 个答案:

答案 0 :(得分:1)

您不应该引用QueryString[]集合吗?还可以使用HttpUtility.HtmlDecode()来取消查询字符串。

<img src="~/Content/app/images/logo-@(HttpUtility.HtmlDecode(Request.QueryString["brand"])).png" alt=@(HttpUtility.HtmlDecode(Request.QueryString["brand"]))>

答案 1 :(得分:0)

更好的答案是在控制器操作中收集品牌请求参数,并将其存储在会话中或构建一个知道品牌并指向正确网址的特殊视图模型。显示在请求参数的视图中构建图像URL的任何示例要么在参数未被传递时打开XSS或空指针。

public ActionResult Index( string brand ) {
    if (string.IsNullOrEmpty(brand)) {
        brand = "TLC"; 
    }
    Session["brand"] = brand;
    return View();
}

然后在你看来:

<img src="@string.format("~/Content/app/images/logo-{0}.png", Session["brand"])" alt="@Session["brand"]">`