C# - 简单的SubMenu

时间:2017-06-02 20:01:57

标签: c# razor

我试图在Gaming上写一个简单的下拉列表,说PC。

string url = @"http://restcountries.eu/rest/v1";
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(IEnumerable<Rootobject>));
WebClient syncClient = new WebClient();
string content = syncClient.DownloadString(url);

using (MemoryStream memo = new MemoryStream(Encoding.Unicode.GetBytes(content)))
{
   IEnumerable<Rootobject> countries = (IEnumerable<Rootobject>)serializer.ReadObject(memo);
   int i = countries.Count();
}

Console.Read();

程序崩溃:

http://localhost:9949/%3Ca%20href=

&#39; /&#39;中的服务器错误应用

从客户端(&lt;)中检测到潜在危险的Request.Path值。

描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.Web.HttpException:从客户端(&lt;)检测到潜在危险的Request.Path值。

来源错误:

在执行当前Web请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息。

堆栈追踪:

[HttpException(0x80004005):从客户端(&lt;)检测到一个潜在危险的Request.Path值。]    System.Web.HttpRequest.ValidateInputIfRequiredByConfig()+561    System.Web.PipelineStepManager.ValidateHelper(HttpContext context)+54

知道为什么吗?

2 个答案:

答案 0 :(得分:1)

您不应将@Html.ActionLink置于游戏项目的href属性中,而是使用@Url.Action

@Html.ActionLink创建整个a标记,而您只需要控制器中正确操作的URL,这就是@Url.Action的用途。

@Html.ActionLink("Name", "action", "controller")的结果是<a href="/controller/action">Name</a>

@Url.Action("action", controller")的结果只是网址字符串'/controller/action'

答案 1 :(得分:0)

你的问题就在这一行:

<a class="dropdown-toggle" role="button" aria-expanded="false" href="@Html.ActionLink("Gaming", "Gaming", "Gaming")" data-toggle="dropdown">Gaming <span class="caret"></span></a>

Html.ActionLink呈现为<a>标记。您正尝试将该标记设置为href值。这显然不会起作用,因为元素不是有效的URL。实际上,您将获得如下代码:

<a class="dropdown-toggle" 
   role="button" 
   aria-expanded="false" 
   href="<a href=".....">blah</a>" 
   data-toggle="dropdown">Gaming <span class="caret"></span></a>

这不是有效的href。您应该使用@Html.Action(...)代替。这只会产生网址。