我将现有的ASP.NET应用程序转换为MVC2,并且有一个使用Ajax通过jQuery调用的现有方法,该方法以前曾起作用,但现在不起作用。因此,由于使用了我无法弄清楚的MVC2,似乎需要做一些更改。
我降低了代码的复杂性,但仍然无法正常工作。这是我当前的代码:
触发按钮单击的jQuery脚本
function leaveComment() {
if (validate()) {
$.ajax({
type: "POST",
url: "/Pages/PostBlogComment",
data: "{'name':'Test','url':'Test','email':'Test','body':'Test','postid':'Test'}",
dataType: "json",
success: function (msg) {
//success code goes here
},
error: function (msg) {
//error code goes here
}
});
}
};
在名为Pages的控制器内部,我创建了以下方法:
public string PostBlogComment( string name, string url, string email, string body, string postid)
{
return "This is a test";
}
调试时,我可以看到调用了PostBlogComment方法,但是这里面临两个主要问题:
Test
从代码中看到的方式发送。对于那些经常使用这些东西的人来说,错误可能很容易发现(或者至少我希望如此:))
这是完成这项工作所需的更改:
$.ajax({
type: 'POST',
url: '/Pages/PostBlogComment',
data: {
name: 'Test',
url: 'Test',
email: 'Test',
body: 'Test',
postid: 'Test'
},
success: function (result) {
alert(result.Value);
},
error: function (msg) {
//error code goes here
}
});
和你的控制器动作
public ActionResult PostBlogComment(
string name,
string url,
string email,
string body,
string postid
)
{
return Json(new { Value = "This is a test" });
}
可以通过引入视图模型进行改进:
public class PostViewModel
{
public string Name { get; set; }
public string Url { get; set; }
public string Email { get; set; }
public string Body { get; set; }
public string Postid { get; set; }
}
然后:
public ActionResult PostBlogComment(PostViewModel model)
{
return Json(new { Value = "This is a test" });
}
注意事项:
data
jQuery AJAX调用的hash属性需要作为我的示例,否则您将发送JSON编码的字符串,而ASP.NET MVC的默认模型绑定器则不知道如何解析为操作参数。在ASP.NET MVC 3中,这已更改,因为有一个JsonValueProviderFactory允许您发送JSON请求。因此,如果您使用的是ASP.NET MVC 3,则可以这样发送AJAX请求,并且操作参数将正确绑定: $.ajax({
type: 'POST',
url: '/Pages/PostBlogComment',
data: JSON.stringify({
name: 'Test',
url: 'Test',
email: 'Test',
body: 'Test',
postid: 'Test'
}),
contentType: 'application/json',
success: function (result) {
alert(result.Value);
},
error: function (msg) {
//error code goes here
}
});
ASP.NET MVC中的所有控制器操作都必须返回ActionResults。因此,如果您想要Json,则返回JsonResult。
该操作将匿名类型传递给Json方法,该方法包含Value
在success
回调中使用的属性,服务器的响应如下所示:
{ 'Value': 'This is a test' }
部署此类文件时,请不要在您的javascript文件中使用此类硬编码网址,否则您的应用程序可能不会损坏。处理网址时,请始终使用Url帮助器:
...
url: '<%= Url.Action("PostBlogComment", "Pages") %>',
...
或者,如果这是一个外部javascript文件,则可以使用一些在视图中初始化的全局js变量来指向正确的网址,也可以将此网址作为DOM的一部分(例如,作为anchorhref属性或HTML5 data-*
属性),然后使用jQuery获取值。
我正在使用ProcessBuilder从Java调用Python(Anaconda)代码。当我只安装Python时,它工作正常。但是现在我已经删除了Python并安装了Anaconda。调用Python的代码现在不起作用。得到以下错误。 我正在使用python 3.6.1(anaconda3 4.4.0 64位)和以下代码来执行python 有人能帮我吗。
我有一个简单的facelets页面: Foobar bean如下所示: -将有效的输入值推送到模型(如果组件连接到bean属性)。 -执行操作和操作侦听器(如果组件是操作)。 所以在这里,应该执行myCommandButton,不是吗?而组件的执行意味着要执行它的操作?
问题内容: 我使用React和Express的同构JavaScript应用程序遇到问题。 我正在尝试在组件装入时使用axios.get发出HTTP请求 我从API获取状态为200 res,但是没有收到任何响应数据并且控制台中出现错误 但是,如果我在server.js中发出请求 它工作正常,服务器启动时我得到响应数据。这是实际API的问题,还是我做错了什么?如果这是一个CORS问题,我猜server
问题内容: 我收到以下异常: com.google.gwt.user.client.rpc.SerializationException:类型“ java.lang.Long”未包含在可以通过此SerializationPolicy进行序列化的类型集中,或者无法加载其Class对象。为了安全起见,此类型将不会序列化 使用GWT 2.1和内置的Jetty服务器。根据文档,此类型肯定是可序列化的…我如
问题内容: 我在SVN上的Eclipse中有一个新的Java项目,只是试图在Eclipse的Project Explorer窗口中打开该项目,并收到此错误: 从插件调用代码时发生了问题。 我该如何解决这个问题? 异常堆栈跟踪: 会话数据: 问题答案: 您的项目可能没有配置为您的补偿。尝试从现有资源中删除并重新创建项目。如果它们不小心提交到SVN(例如,以点开头),也请删除所有的月食内部目录。
我已经为一个Java项目在本地机器上建立了Git remote存储库,基本上我们试图从两个不同的地方处理同一个项目,专用的Git服务器在另一端。 我走过的台阶! •更新主机文件以添加新服务器 我已经成功地做到了; 当我查看Eclipse内置的ErrorLog时: 我得到了; 当我双击 问题是: 如何解决此问题并运行项目文件?请告诉我方向,谢谢。