我正在使用getJson方法调用javascript中的控制器操作。我需要将两个参数传递给控制器上的action方法,但我很难这样做。我不完全理解路由表,也不确定这是否是我需要使用它来实现这一点。请参阅下面的示例,了解我要做的事情。
var action = "<%=Url.Content('~/Postcode/GetAddressResults/')%>" + $get("Premise").value + "/" + $get("SearchPostcode").value
$.getJSON(action, null, function(data) {
$("#AddressDropDown").fillSelect(data);
});
这是我的路线,我不明白如何利用......
routes.MapRoute(
"postcode",
"Postcode/GetAddressResults/{premise}/{postcode}",
new { controller = "Motor", action = "GetAddressResults", premise = "", postcode = "" });
答案 0 :(得分:0)
你肯定是在正确的道路上,虽然我需要看到你的控制器肯定知道。它需要看起来像这样:
public ActionResult GetAddressResults(string premise, string postcode)
{
//Do something.
return Json(AddressService.GetResultsOfSomeKind(premise, postcode);
}
在ActionResult上设置断点,以便知道它正在被调用。如果不是,请使用Firefox并检查错误控制台是否存在语法错误(您发布的代码有一些错误)。
更新:
什么是
$get("Premise").value?
要通过jQuery获取输入值,请使用:
$("#fieldid").val();
我建议使用适用于Firefox的Firebug插件。这样你就可以准确地知道你的javascript在哪一点上断了。在$ .getJSON调用向您的控制器发送请求之前,您很可能会发现“var action =”语句没有在客户端正确附加表单字段值。