gpt4 book ai didi

asp.net - MVC4 中的 jQuery $.post() 方法

转载 作者:行者123 更新时间:2023-12-01 03:44:01 26 4
gpt4 key购买 nike

我正在使用 jQuery $.post() 方法来调用 Controller 中的方法,但调用此函数时它没有调用该方法。有人知道如何使用 jQuery $.post() 方法吗?

function OpenDialog(StateCode) { 
$.post("~/Home/LoadCityViewModel", {
stateCode: StateCode },
function () {
$("#dialog-modal").dialog("open");
});
return false;
}

private ListingsViewModel LoadCityViewModel(string stateCode) { return null; }

最佳答案

由于您除了$.post()之外还有一些问题,我可以指出您代码中的几个基本问​​题:

  1. "~/Home/LoadCityViewModel" 不是有效的 url,~/ 符号仅被 ASP.NET 服务器端识别为指向Web 应用程序根路径(无论是虚拟目录还是网站根目录)。使用Url.ActionUrl.Content而是解析 url。如果指定的代码在单独的 javascript 文件中声明,请考虑将 url 作为设置参数传递(在 Razor View 中初始化它),或者只指定 "/Home/LoadCityViewModel" (如果您确定您的 Web 应用程序将部署到网站根目录而不是虚拟目录)。请注意,“Home/LoadCityViewModel”(不带前导“/”)表示“从当前位置”或“从当前页面路径”,并且它不起作用,对于例如,如果您从另一个 Controller 的 View 调用。

  2. jQuery UI 对话框小部件:检查API samplehttp://jqueryui.com/dialog/ 上的源代码

  3. return false,当函数总是返回false时,它真的有意义吗?

  4. Controller 的操作方法应该是公开的。

  5. 请注意,Action 方法应返回 ActionResult ,而不是 ViewModel

  6. 如果您需要限制您的操作来处理 POST仅 http 方法(这就是为什么您选择 jQuery.post() 而不是 jQuery.get() ,我猜),用 HttpPostAttribute 标记您的方法

所以,我想这就是您基本上需要的(如果它是 Razor View 中的内联脚本):

function OpenDialog(StateCode) { 
$.post("@Url.Action("LoadCityViewModel", "Home")",
// it will actually output "/Home/LoadCityViewModel"
{ stateCode: StateCode },
function () {
$("#dialog-modal").dialog();
});
}

服务器代码:

[HttpPost]
public ActionResult LoadCityViewModel(string stateCode)
{
return Json(null); //Pass your model as a parameter here.
}

如果我写了太多多余的东西,那我很抱歉;)

关于asp.net - MVC4 中的 jQuery $.post() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15624358/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com