4

我正在使用 getJson 方法在 javascript 中调用控制器操作。我需要将两个参数传递给控制器​​上的操作方法,但我正在努力这样做。我不完全了解路由表,并且不确定这是否是我需要使用它才能使其正常工作。请参阅下面的示例,了解我正在尝试做的事情。

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 = ""
 });
4

1 回答 1

2

您肯定走在正确的道路上,尽管我需要查看您的控制器才能确定。它需要看起来像这样:

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 =”语句没有正确地在客户端附加表单字段值。

于 2009-03-31T03:01:09.670 回答