【发布时间】:2014-10-21 05:19:15
【问题描述】:
我在剃刀视图中有以下 jQuery 调用。
$.getJSON('/Controller/ActionName/'+ @ViewContext.RouteData.Values["Name"] + '?Date=' + ('#StartDate').val(), function (data) {
alert(data);
});
chrome 浏览器控制台的错误是以下 URL 已返回未找到页面。
http://localhost:{portNumber}/Controller/ActionName/John?Date=9/21/2014&_=1413867422739
这是真的,因为在 url 的末尾添加了额外的标记。
谁能告诉我额外令牌的原因?
我在控制器中有适当的方法,但无法找到解决方案。
routeConfig.cs 文件没有更改,它具有默认值。
如果您需要更多信息,请在 cmets 中告诉我。我无法理解要提供哪些信息。
路线信息:
{
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", name = UrlParameter.Optional }
);
}
控制器中的动作签名
public JsonResult ActionName(string**?** name, DateTime startDate)
{
var model = new ViewModel();
model.loadItems(name**.value**, startDate);
return Json(model.Data, **JsonRequestBehavior.AllowGet**);
}
答案:
在 ** 包围中进行了上述更改,并且代码有效。
感谢您的 cmets 和答案。
更新:
我提到了默认值是为了隐藏不需要的信息。
localhost 是正确的,其他页面工作正常只是与此 ajax 调用相关的一小部分 ui 不起作用。
没有控制器是其他名称。
您能否提供在 URLS 中发送日期值的解决方案?
【问题讨论】:
-
你调用的方法的签名是什么?
-
额外的token是为了防止ajax调用被缓存,它是一个随机数,会附加到每个请求中。它不应该影响任何东西,但从控制器获取 Action 签名会有所帮助。
-
loclhst000000是什么? -
你的问题是日期格式。 "9/21/2014" 获取变量中不能有"/"
-
你的控制器真的叫ControllerController吗?
标签: c# jquery asp.net-mvc asp.net-mvc-routing