我有我想在一个锚定标记渲染为,是在Razor视图的URL。 我本来以为Html.Raw将要走的路:
@{
string test = "http://someurl.com/someimage.png?a=1234&b=5678";
}
<div>
<a href="@Html.Raw(test)">Test</a>
</div>
但是,这是行不通的。 该符号被编码和HTML呈现为:
<div>
<a href="http://someurl.com/someimage.png?a=1234&b=5678">Test</a>
</div>
奇怪的是,如果我做Html.Raw呼叫锚标记之外,如预期的HTML输出:
<div>
@Html.Raw(test)
<div>
呈现为:
<div>
http://someurl.com/someimage.png?a=1234&b=5678
</div>
谁能解释这是为什么?
编辑:
尝试了一些其他的东西出来,发现了以下工作按预期:
<div data-url="@Html.Raw(test)"></div>
输出:
<div data-url="http://someurl.com/someimage.png?a=1234&b=5678"></div>
要添加多一点背景, 我的目标是不实际使用的URL中的锚标签 ,因为href
可以均为HTML编码,仍然工作(我只是用锚标记情况为例)。 而我希望使用的URL在一个<object> <param>
值标签用于Flash对象。 Flash对象不能正确识别的HTML编码的网址,但我不能正确地获取原始URL输出。
我很茫然。 时间打出来的MVC源代码,我猜...
这是发生,因为一些在管道(我猜的剃须刀,但我需要看看它)属性编码所有商品属性值。 这应该不会影响但是从到达您想要的位置的浏览器。
您可以使用测试这个@Html.ActionLink(text, action, routeAttributes)
过载。
@Html.ActionLink("Test", "Index", new { tony = "1", raul = 2 })
输出
<a href="/?tony=1&raul=2">Test</a>
在问候你的编辑,你只需要使整个<param>
您的原始值的一部分。
@{
var test = "<param src=\"http://someurl.com/someimage.png?a=1234&b=5678\">";
}
<div>
<object>
@Html.Raw(test)
</object>
</div>
像这样:
@{
string test = "http://someurl.com/someimage.png?a=1234&b=5678";
}
<div>
<a href="@Html.Raw(Html.AttributeEncode(test))">Test</a>
</div>
产生有效的标记:
<div>
<a href="http://someurl.com/someimage.png?a=1234&b=5678">Test</a>
</div>
但是,这是行不通的。 该符号被编码和HTML呈现为:
但是,这正是一个有效的标记应该是什么样子等。 作为一个属性使用时与符号必须被编码。 别担心,浏览器将完全没有理解这个网址。
请注意,以下是无效的标记,所以你不希望这样 :
<div>
<a href="http://someurl.com/someimage.png?a=1234&b=5678">Test</a>
</div>
尝试
<div>
<a href="@MvcHtmlString.Create(test)">Test</a>
</div>
只是尝试以下...它完美的作品。
@{
string test = "https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token="+@ViewBag.Token;
}
<div>
<a href="@Html.Raw(System.Web.HttpUtility.HtmlDecode(test))">@Html.Raw(System.Web.HttpUtility.HtmlDecode(test))</a>
</div>
你为什么不使用jQuery文章的网址:
$(function () {
$('form').submit(function () {
$.ajax({
url: this.action,
type: this.method,
data: { a:'firstvalue', b: 'secondvalue'},
success: function (result) {
//code for successful result
}
});
return false;
});
});
在控制器
public ActionResult Fetch(string a, string b)
{
//write required codes here
return View();
}