【发布时间】:2016-10-28 09:18:35
【问题描述】:
编辑 2 我能够解决这个问题。 Javascript 或控制器代码没有任何问题。问题来自 .dll 文件。在控制器方法中,我从 TextModel 对象构建了一个新的 TextInfo 对象。 TextInfo 对象来自从 API 构建的 .dll。然而,这个 .dll 在文件系统中有多个具有不同构建日期的实例。似乎旧版本没有被正确删除,但它是编译器使用的版本。这创建了一个 500 Internal Server Error 告诉我方法不可用。
编辑 1 我相当肯定我的问题源于我的模型中的一个属性没有正确设置,但我不知道为什么。我有 1 个实例,我可以在其中进一步调试代码,但我不知道为什么或如何发生这种情况。等我找到更多答案后会更新。
我无法从我的 ajax 调用访问控制器操作,老实说,我无法启动代码的原因对我来说毫无意义。问题似乎出在 CurrentPageNumber 上。当我从 c# 和 javascript 中注释掉这个变量时,我能够在控制器中命中断点。但是当我取消注释该变量时,我无法达到断点。我得到的错误是 500 Internal Server Error。对我来说,这听起来像 JSON 键与控制器参数不同,但正如您在下面看到的那样,情况并非如此(除非我失明了)。知道问题可能是什么吗?可能我看错了方向?
tl;当 CurrentPageNumber 在参数和键列表中时控制器 ActionResult 未启动(未注释),但它不在时启动(已注释掉)。
我正在尝试达到以下 ActionResult。
public ActionResult SavePageInfo(List<TextModel> TextObjects, string ImageSource, int CurrentPageNumber)
我在以下 AJAX 调用的帮助下完成此操作
var json = JSON.stringify({ TextObjects: textObjects, ImageSource: imageSource, CurrentPageNumber: pageNumber });
$.ajax({
url: "/NextprintPhotobook/SavePageInfo",
type: "POST",
data: json,
dataType: "json",
contentType: 'application/json; charset=utf-8',
success: function (data) {
console.log(data.message);
alert(data.message);
}
})
生成的 JSON 如下所示(您可以看到所有值都已设置):
"{"TextObjects":[{"text":"Test","x":50,"y":50,"fillColor":"#77DD44","fontFamily":"arial","fontStyle ":"normal","fontSize":"18pt","fontWeight":"normal","textAlignment":"start","angle":0}], "ImageSource":"http://localhost:22223/api/file/getfile?name=04.jpg&collectionId=4103&version=1&size=original", "CurrentPageNumber":1}"
TextModel如下:
public class TextModel
{
public string text
{
get; set;
}
public int x
{
get; set;
}
public int y
{
get; set;
}
// Same properties as in the JSON.
}
【问题讨论】:
-
感觉它可能与 mvc 和映射到您的列表参数有关...它们需要被索引苏打水说话...尝试调查这个...我可能是错的... . mvc 将前缀名称添加到具有索引的列表中,以便它知道如何映射到列表..
-
您确定您的网址正确吗?尝试在开始的 NextprintPhotobook/SavePageInfo 中使用“/”
-
使用
@Html.ActionLink()代替文本网址。 -
@Seabizkit tl;dr 说如果 CurrentPageNumber 被注释掉,代码就可以工作。这不是告诉我们列表的索引是正确完成的吗?
-
网址正确。如文中所述,我已经能够在控制器功能中点击第一行。
标签: javascript c# ajax asp.net-mvc