我收到此错误:从客户端(:)检测到一个潜在危险的Request.Path值。
我试图将DateTime和int传递给ActionResult,我创建了一个自定义路由来处理它。我在URL中看不到(:),所以不知道如何替换字符串。是造成URL日期中(%)的原因吗?这是将变量传递给控制器的代码:
//View
DateTime raceDate = DateTime.Today;
<center><a href="@Url.Action("EventInfo", new {raceDate= date, trackID=trID})" class="buttonize" target="_blank">View</a></center>
//Controller
public ActionResult EventInfo(DateTime raceDate, int trackID )
{
EventInfomodel = new EventInfo();
model.MyRace = db.GetRaceDetails(raceDate, trackID)
return View(model);
}
//Route.Config
routes.MapRoute("Home/EventInfo", "Home/EventInfo/{raceDate}/{trackID}", new { controller = "Home", action = "EventInfo", raceDate = UrlParameter.Optional, trackID= UrlParameter.Optional });
浏览器中的URL如下:
Home/EventInfo/04/22/2019%2000%3a00%3a00/59
我是全新的MVC和C#,所以任何帮助都会很棒,谢谢。
答案 0 :(得分:1)
安全是您出错的原因
为什么:URL编码可确保所有浏览器正确传输URL字符串中的文本。一些浏览器可能会截断或破坏诸如问号(?),&符(&),斜杠(/)和空格之类的字符。
解决方案: 撰写网址时,需要以格式进行编码。
b.id
谢谢。
答案 1 :(得分:0)
@Praneet Nadkar 您的建议有效,我将日期格式设置为字符串,如下所示:
DateTime mydate = DateTime.Today;
string date = mydate.ToString("yyyy-MM-dd");
现在我的URL看起来好多了并且可以正常工作
Home/EventInfo/2019-04-22/59
谢谢